2014-12-04 68 views
1

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

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

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

+0

一个解决方案虽然不够高雅,但会使用Skip()和Take()来分页结果,并在结果返回时调用下一页。同样的结果。 – 2014-12-04 18:52:15

回答

2

似乎没有成为一个很多关于它的文件,但它看来,实体框架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。