实体框架代码优先的IQueryable [英] Entity Framework Code First IQueryable

查看:106
本文介绍了实体框架代码优先的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆