选择一个范围与实体框架

本文关键字:范围 实体 框架 一个 选择 | 更新日期: 2023-09-27 17:55:07

我有一个问题,试图最大化我们的listview的性能,有页面。

我希望实体框架做一个选择语句,但只返回结果的范围(范围=列表视图的一页的项目)。

我已经搜索了谷歌,但没有找到任何关于这个的结果。我只发现我可以使用。tolist()。GetRange(开始索引,结束索引),但随后所有项目将加载到内存中,这就是我想避免的…

谁能告诉我这能不能做到?(我不想使用存储过程或视图或类似的东西,因为我们的listview必须是可重用的…)

谢谢!

选择一个范围与实体框架

您应该能够使用.Take(x).ToList()

编辑:对不起,试试.Skip(startPosition).Take(numberOfItems).ToList()

如果您不使用延迟加载,请确保在应用过滤器时在Load()之前使用Query(),以避免在应用过滤器之前加载整个集合:

context.Entry(blog) 
    .Collection(b => b.Posts) 
    .Query() 
    .Skip(startPosition)
    .Take(numberOfItems)
    .Load()
    .ToList(); 

当使用Query方法时,通常最好关闭导航属性的延迟加载。这是因为如果不这样做,整个集合可能会被惰性加载自动加载机制,在过滤查询执行之前或之后。

详细信息:http://msdn.microsoft.com/en-us/data/jj574232.aspx