我正在使用实体框架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