我有一个类似这样的代码库
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: a second operation started on this context before a previous operation completed...
DbContext 在 ConfigureServices 中已注册,如下:
services.AddDbContext<EmployeeDbContext>(ServiceLifetime.Transient);
教程中提到: Entity Framework Core 不支持在同一 DbContext 实例上运行多个并行操作。
但是!如何在异步情况下使用它与仓库?