使用具有大结果集的实体框架5的性能问题

时间:2013-11-11 20:32:11

标签: c# .net performance entity-framework entity-framework-5

我正在使用Entity Framework 5,我正在执行一个返回相对较大的结果集的查询,大约30,000行。查询本身执行速度非常快,只需要大约700毫秒。

构建linq查询后,我调用query.Load();,然后将DataContext.Set<MyType>.Local作为ObservableCollection返回给调用者。结果显示在可编辑的网格中。

问题在于query.Load();调用 - 它需要大约60秒,这太长了。我是猜测这是EF将结果转换为.NET对象的地方吗?我尝试过分析,但它不会比IQueryable.Load:/

更深入

任何想法如何才能提高效果?

顺便说一下,我尝试升级到EF6以查看是否有帮助,但实际上情况变得更糟,query.Load();通常需要100秒!

1 个答案:

答案 0 :(得分:0)

在需要结果之前,不会执行Linq to Entities查询。那是计算成本“支付”的时候。在此之前,查询只是一个查询。正如Stefan建议的那样,你应该尝试添加一些过滤器,或者至少使用.Skip和.Take方法的分页机制。

您还可以查看有关linq分页的this MSDN文章。

希望我帮忙!