为了提高我的页面性能,我想异步运行一些查询 我升级到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毫秒,这意味着呼叫是同步而不是异步进行的。
任何人都对我为什么或做错了什么有所了解?
答案 0 :(得分:2)
任何人都对我为什么或做错了什么有所了解?
这是应用程序中第一次调用EF吗?你能为一次性构建EF模型的内部表示做好准备吗?
使用更复杂的EF模型,第一次调用会产生大量开销。但这是一次性(每个应用程序域)成本。
最好定时拨打一些电话(然后扔掉最短和最长的时间)。