使用EF6的异步查询结果

时间:2014-12-04 18:29:06

标签: c# entity-framework asynchronous

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

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

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

1 个答案:

答案 0 :(得分:2)

似乎没有很多关于它的文档,但似乎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));
}

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