实体框架代码优先的IQueryable [英] Entity Framework Code First IQueryable
本文介绍了实体框架代码优先的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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文