在上一个操作完成ASP NET CORE之前,在此上下文中启动了第二个操作

时间:2018-05-23 15:32:33

标签: c# entity-framework asynchronous asp.net-core asp.net-core-mvc

我在ASP Net CORE mvc项目中遇到这个错误很麻烦,我找不到解决方法:

A second operation started on this context before a previous operation
completed. Any instance members are not guaranteed to be thread safe

它附加在非异步函数上:

public Employee GetEmployeeByuserID(String userID)
    {
         return _applicationDBContext.Employee.Where(e => e.UserId.Equals(userID)).First();
    }

我尝试将此函数设为异步,但它只是将错误附加到其他位置。

该函数在DAL中,依赖注入_applicationDBContext。 声明的Dal在startup.cs中的AddTransient中声明 我已经看到了一些等待的解决方案,但我找不到我想把它放在哪里。

修改

如果我在return _applicationDBContext.Employee.Where(e => e.UserId.Equals(userID)).First();之前创建了一个断点来暂停代码 并继续,它运作良好。

1 个答案:

答案 0 :(得分:0)

我终于通过为每个请求创建一个新的DAL来实现它:

Employee emp = new EmployeeDal(new ApplicationDbContext()).GetEmployeeByuserID(appUser.Id);

如果您有更好的解决方案,请告诉我。