【发布时间】:2015-05-19 17:23:28
【问题描述】:
所以.. 这可能是一个愚蠢的问题。我无法完全理解 WHY 使用 EF6 Async 与将同步 EF6 调用包装在 Task 中相比会提高性能(假设 db 调用在 Web API REST api 方法中)
即,为什么会这样:
//wrapping synch with asynch
return await Task.Run(() =>
{
var albums = this.context.Albums
.Where(x => x.Artist.ID == artist.ID)
.ToList();
return albums;
});
比这更糟糕:
//using async
return await this.context.Albums
.Where(x => x.Artist.ID == artist.ID)
.ToListAsync();
注意:我已经读过这篇文章 http://blogs.msdn.com/b/pfxteam/archive/2012/03/24/10287244.aspx,它似乎在说(过于简单化)“不要只包装同步方法,更有效地重写方法”。
问题 1,这是 EF6 异步实现所做的吗?我假设它在实现中使用了异步 I/O?
问题 2(也是我真正的问题) - 有人可以解释 WHY 这更好吗?在 db 操作完成之前,这两种实现不会释放请求线程来处理其他请求吗?
【问题讨论】:
标签: c# entity-framework asynchronous