【问题标题】:async query result using EF6使用 EF6 的异步查询结果
【发布时间】:2014-12-04 18:29:05
【问题描述】:

我有一个查询结果集为 300 - 500。我知道这不是很多项目,但计算确实需要很长时间,比如 60 到 90 秒...
当我在 Management Studio 上运行 EF6 生成的查询时,我每秒会得到 2-3 个新行。
我想在我的网格中复制这种行为,例如:在网格可用时为网格提供新行。

有没有办法使用 EF6 做到这一点?

使用“async”关键字/方法强制整个操作挂起...我曾经使用 BeginExecuteReader + 回调和 SqlConnection 上的一些设置来执行此操作...

【问题讨论】:

  • 一个解决方案,虽然不是那么优雅,但是使用Skip()Take() 对结果进行分页,并在结果返回时调用下一页。最终结果相同。

标签: c# entity-framework asynchronous


【解决方案1】:

似乎没有很多关于它的文档,但似乎 Entity Framework 6 添加了 ForEachAsync 扩展方法:

http://msdn.microsoft.com/en-us/library/system.data.entity.queryableextensions.foreachasync(v=vs.113).aspx

this blog 上的代码示例

using (var context = new DataContext()) {
    await context.Manufacturers.ForEachAsync(m => Console.WriteLine("{0} : {1}", m.Name, m.Country));
}

在您的项目回调中,您可以在结果可用时将结果发送回 UI。

【讨论】:

    猜你喜欢
    • 2020-06-01
    • 2018-06-04
    • 2011-08-14
    • 2014-07-20
    • 2018-02-04
    • 1970-01-01
    • 2020-07-26
    • 2018-01-17
    • 1970-01-01
    相关资源
    最近更新 更多