Używam Entity Framework Code First i wpadłem na mały blok drogi. Mam klasy "osoba" zdefiniowany jako takie:Kod struktury Entity Najpierw IQueryable
public class Person
{
public Guid Id { get; set; }
public virtual ICollection<History> History { get; set; }
}
i klasy "Historia" zdefiniowany jako takie:
public class History
{
public Guid Id { get; set; }
public virtual Person Owner { get; set; }
public DateTime OnDate { get; set; }
}
Jednak kiedy zadzwonić: Wydaje
IEnumerable<History> results = person.History
.OrderBy(h => h.OnDate)
.Take(50)
.ToArray();
wyciągnąć całą historię dla osoby, a następnie zamówić ją i takie w pamięci. Wszelkie zalecenia dotyczące tego, czego mi brakuje?
Z góry dziękuję!
Jakiego zachowania się spodziewałeś? Czy nie ogranicza wyniku do 50 rekordów? –
Myślę, że oczekiwanym zachowaniem jest zamówienie go w bazie danych –
Spodziewałem się, że wyśle zamówienie i ograniczy do serwera, powodując, że serwer SQL wykonuje zamawianie i ograniczanie. Zamiast tego wydaje się wciągać całą historię do pamięci, wszystkie ponad 30 000 elementów tego kontaktu, a następnie wykonuje kolejność i ogranicza pamięć. – Terry