Ef中 dbContext是单线程的,假设我们有三个线程需要同时进行数据库的CURD操作。如何在多线程中使用单线程呢?
在每个线程中创建单独的作用域来获得dbContext
#简单示例代码
for(var i = 0;i<3;i++){
Task.Factory.StartNew(_myBusiness.DataBaseCURD)
}
# MyBusiness.cs
ctor...
private readonly IServiceProvider _serviceProvide;
public async Task DataBaseCURD(){
using var db = _serviceProvide.CreateScope().ServiceProvider.GetService(typeOf(IDbContext));
//do something...
}