根据微软文档DbContext 生存期、配置和初始化 - EF Core,使用EF Core进行异步操作时,应该立即await。但是,有时从性能放面考虑,需要进行不等待的Task或者多个线程进行CRUD,这时可以为每个线程创建单独的Scope。
private readonly IServiceProvider _serviceProvider;
public 构造函数(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
private void SyncOrder(string orderId)
{
using (var serviceScope = _serviceProvider.CreateScope())
{
var efContext = serviceScope.ServiceProvider.GetService<EFDbContext>();
var order = await efContext.Orders.Where(.........).ToListAsync();
}
}
原文链接:zhuanlan.zhihu.com/p/432441457 感谢分享。