【发布时间】:2020-01-27 16:17:33
【问题描述】:
我今天遇到了几行代码,归结为如下:
using (var db = new AppDbContext())
{
var foo = await db.Foos
.Where(m => m.Name == "BuzzBaz" )
.FirstAsync();
foo.Name = "Quxx";
db.SaveChanges();
}
请注意,选择查询是 async,但对 SaveChanges() 的调用不是。是同步的!
这可能会造成任何问题吗?我应该重构它以使用db.SaveChangesAsync(); 并且一切都很好吗?或者也许只是调用First() 而不是FirstAsync()?或者它可能是无害的并且可能对整体系统性能有一些好处?
我发现一些文档让我认为完全删除 async 可能是一个不错的选择。 https://docs.microsoft.com/en-us/ef/ef6/fundamentals/async
在大多数使用异步的应用程序中没有明显的好处,甚至可能是有害的。在提交之前使用测试、分析和常识来衡量异步在您的特定场景中的影响。
【问题讨论】:
标签: c# async-await entity-framework-6