EF Core 多线程问题

424 阅读1分钟

根据微软文档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 感谢分享。