0

我正在使用 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 秒!

4

1 回答 1

0

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

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

希望我有所帮助!

于 2013-11-11T21:08:34.733 回答