Entity framework 通过在EF中指定范围从ObjectSet获取对象
我正在试用EF4.0。我有一个Employee对象,使用EF,我只需调用Entity framework 通过在EF中指定范围从ObjectSet获取对象,entity-framework,range,objectset,Entity Framework,Range,Objectset,我正在试用EF4.0。我有一个Employee对象,使用EF,我只需调用 Context.Employees 现在,上面的调用将抛出以下sql查询 从员工中选择* 上面的查询工作正常,我没有任何抱怨,但是您知道,如果表中有数百万条记录,那么这将不够性能,并且肯定会影响性能 因此,我试图找出一种方法,为我的对象集提供一个范围,在这个范围内,我可以说,从Employee对象集中获取30到60条记录 有没有办法做到这一点 如有任何建议,我们将不胜感激 更新: 我正试图这样做,以获得20名员工(页面大小
Context.Employees
现在,上面的调用将抛出以下sql查询
从员工中选择*
上面的查询工作正常,我没有任何抱怨,但是您知道,如果表中有数百万条记录,那么这将不够性能,并且肯定会影响性能
因此,我试图找出一种方法,为我的对象集提供一个范围,在这个范围内,我可以说,从Employee对象集中获取30到60条记录
有没有办法做到这一点
如有任何建议,我们将不胜感激
更新:
我正试图这样做,以获得20名员工(页面大小)回来的基础上的页面索引
提前谢谢。
尼克 好吧,我终于想出了一个方法,我认为这是相当不错的。这就是我所做的 我使用iQueryEnable中的Skip and Take方法根据页面索引跳过并获取对象 因此,我使用了以下代码:
var empList = context.Employees.OrderBy("it.CreatedDate").Skip(pageIndex * 20 - 20).Take(20);
这是一种方式
如果有人觉得这不是一个好的解决方案,你非常欢迎拿出其他的东西,我可以取代
更新代码
根据Yury Tarabanko的建议,我将代码更改如下:
var empList = context.Employees.OrderBy(x=>x.CreatedDate).Skip(pageIndex * 20 - 20).Take(20);
感谢那些花时间阅读我的问题的人
Thnq,
NiK…顺便说一句,您可以使用
OrderBy(e=>e.CreatedDate)
来避免使用“神奇字符串”。