我正在使用實體框架Code First,並遇到了一個小路障。我有一類 「人」 定義爲這樣的:實體框架代碼第一個IQueryable
public class Person
{
public Guid Id { get; set; }
public virtual ICollection<History> History { get; set; }
}
和一類 「歷史」 這樣定義:
public class History
{
public Guid Id { get; set; }
public virtual Person Owner { get; set; }
public DateTime OnDate { get; set; }
}
然而,當我打電話:
IEnumerable<History> results = person.History
.OrderBy(h => h.OnDate)
.Take(50)
.ToArray();
看樣子把這個人的所有歷史都拉下來,然後在內存中排序等等。關於我失蹤的任何建議?
在此先感謝!
你期待看到什麼行爲?它不能將結果限制爲50條記錄嗎? –
我認爲預期的行爲是在數據庫中排序 –
我期待它將訂單和限制發送到服務器,導致SQL服務器執行排序和限制。相反,它似乎把所有的歷史記錄都存入內存中,所有這些聯繫人都有30,000多個元素,然後在內存中進行排序和限制。 – Terry