本文主要介绍Entity Framework Core在ASP.NET Core中,多个请求中使用同一个context问题,Entity Framework Core上下文(context)不能在多线程中使用,多个请求其实就是多个线程。报错信息:InvalidOperationException: A second operation started on this context before a previous operation completed. Any instance members are not guaranteed to be thread safe.Microsoft.EntityFrameworkCore.Internal.ConcurrencyDetector.EnterCriticalSection()。
引用EF Core的版本:
项目ASP.Net Core版本:ASP.Net Core 2.0
报错信息:InvalidOperationException: A second operation started on this context before a previous operation completed. Any instance members are not guaranteed to be thread safe.
Microsoft.EntityFrameworkCore.Internal.ConcurrencyDetector.EnterCriticalSection()
问题原因:
EF Core的Context两个线程同时使用会报该异常; 同一请求中的两个线程,或两个请求。
解决方法:
在Controller中context的中字段不要使用静态的。例如:
private readonly MyDbContext _context; //not static
public MyController(MyDbContext context) {
_context = context;
}
并且在Startup类中ConfigureServices()中配置Context时,要使用如下方法配置:
services.AddTransient();
或文章来源:https://www.toymoban.com/news/detail-467533.html
services.AddDbContext(ServiceLifetime.Transient);
上述配置在每次请求时,创建EF Core Context上下文件,则不会出现多个线程使用同一个Context问题。文章来源地址https://www.toymoban.com/news/detail-467533.html
到了这里,关于.NET Core Entity Framework Core 多线程中使用Context报错问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!