EF6 ToListAsync不会运行异步但会阻塞线程

时间:2015-07-08 08:57:12

标签: c# entity-framework asynchronous async-await ef-database-first

为了提高我的页面性能,我想异步运行一些查询 我升级到EF6,因为它通过暴露异步方法本机支持此功能 我无法同时触发查询,所以我将我的代码简化为这个简单的例子:

var sw = new Stopwatch();
sw.Start(); 
var dummy = context.Set<CA_Event_Person>().Take(200).ToListAsync();
sw.Stop();
Logger.Debug("attempt nr 1 : " + sw.ElapsedMilliseconds);
var result = await dummy;

我的例外是秒表因为我等待稍后等待而立即停止。
然而,我的记录器表示秒表已经传递了5000毫秒,这意味着呼叫是同步而不是异步进行的。

任何人都对我为什么或做错了什么有所了解?

1 个答案:

答案 0 :(得分:2)

  

任何人都对我为什么或做错了什么有所了解?

这是应用程序中第一次调用EF吗?你能为一次性构建EF模型的内部表示做好准备吗?

使用更复杂的EF模型,第一次调用会产生大量开销。但这是一次性(每个应用程序域)成本。

最好定时拨打一些电话(然后扔掉最短和最长的时间)。