【发布时间】:2019-09-26 17:51:18
【问题描述】:
我有类似的存储库
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);
教程如下: Entity Framework Core 不支持在同一个 DbContext 实例上运行多个并行操作。
但是!如何在异步存储库中使用它?
【问题讨论】:
标签: c# repository-pattern ef-core-3.0