我有类似的存储库
public interface IEmployeeRepository
{
Task<EmployeeSettings> GetEmployeeSettings(int employeeId);
Task<ICollection<DepartmentWorkPosition>> GetWorkPositions(int employeeId);
}
存储库的构造函数(DbContext注入):
public EmployeeRepository(EmployeeDbContext dbContext)
{
_dbContext = dbContext;
}
并且在EF Core 2.0中称呼它,例如
var settingsTask = _employeeRepository
.GetEmployeeSettings(employeeId.Value);
var workPositionsTask = _employeeRepository
.GetWorkPositions(employeeId.Value);
await Task.WhenAll(settingsTask, workPositionsTask);
// do other things...
使用EF Core 3.0,存在InvalidOperationException:在上一个操作完成之前,在此上下文上启动了第二个操作...
DbContext在类似的ConfigureServices中注册
services.AddDbContext<EmployeeDbContext>(ServiceLifetime.Transient);
教程说:实体框架核心不支持在同一DbContext实例上运行的多个并行操作。但是!如何在异步存储库中使用它?
如何与异步存储库一起使用?
每个存储库只能同时发出一个异步请求。如果一次需要多个存储库,则需要多个存储库。这可能需要您将存储库
factory注入您的类型。