Ef中 dbContext是單線程的,假設我們有三個線程需要同時進行資料庫的CURD操作。如何在多線程中使用單線程呢?
- 在每個線程中建立單獨的作用域來獲得dbContext
在每個線程中建立單獨的作用域來獲得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...
}