使用 EF6 的异步查询结果

本文关键字:查询 结果 异步 EF6 使用 | 更新日期: 2023-09-27 18:33:18

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

有没有办法使用 EF6 执行此操作?

使用"异步"关键字/方法强制整个操作挂起...我曾经使用BeginExecuteReader +回调和SqlConnection上的一些设置来做到这一点...

使用 EF6 的异步查询结果

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

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

在此博客中找到的代码示例

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

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