Ade*_*rov 3 c# asp.net-mvc asynchronous entity-framework
我在ASP.Net MVC 5应用程序中遇到异步控制器问题.我正在使用Entity Framework 6 Code First方法.
我有一个方法
public async Task<ActionResult> Index()
{
using(var context = new MyDbContext())
{
var eventsTask = context.Events
.Where(e => e.Enable)
.ToListAsync();
var countTask = context.Users
.CountAsync();
await Task.WhenAll(eventsTask, countTask);
return View(new ViewModel()
{
Events = eventsTask.Result,
Count = countTask.Result
});
}
}
Run Code Online (Sandbox Code Playgroud)
我这里有两个异步方法.我通过MiniProfiler分别测量了它们.它们需要大约85毫秒.
但是在我的方法中,我使用Task.WhenAll()运行它们.我相信它以异步方式执行Db查询,并且两者都需要大约85-90毫秒.但它需要~170-180.所以我有异步方法同步运行(彼此跟随).
我认为这是因为背景.当我删除上下文查询并使用HttpClient调用许多api方法时,我有一个测试.它需要时间等于更长的时间(3 api调用,每个~500 ms.完全方法需要~600 ms).我相信可以异步执行EF方法.
有谁知道解决方案
这甚至不应该实际工作,而是抛出异常.我猜第一个查询在第二个查询开始之前完成.
无论是await
每个查询(所以他们不会同时运行),或使用不同的上下文为每个查询.
归档时间: |
|
查看次数: |
3904 次 |
最近记录: |