本文介绍了实体框架代码优先的IQueryable的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用Entity Framework Code First,但遇到了一个小障碍.我有一个这样定义的人"类:
I am using Entity Framework Code First and ran into a small road block. I have a class "Person" defined as such:
public class Person { public Guid Id { get; set; } public virtual ICollection<History> History { get; set; } }以及这样定义的历史"类:
and a class "History" defined as such:
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();似乎会拉取该人的所有历史记录,然后在内存中对其进行排序.关于我所缺少的内容有什么建议吗?
It appears to pull all of the history for the person, then order it and such in memory. Any recommendations on what I'm missing?
提前谢谢!
推荐答案因为您要查询EF给出的IEnumerable(即LINQ到对象)而不是IQueryable(即LINQ到实体).
Because you are querying an IEnumerable (ie: LINQ to Objects) not IQueryable (ie: LINQ to Entities) given by EF.
您应该使用
IEnumerable<History> results = context.History.Where(h => h.Person.Id = "sfssd").OrderBy(h => h.OnDate).Take(50)更多推荐
实体框架代码优先的IQueryable
发布评论