C# 存储库错误-在创建模型时无法使用上下文
尝试从注册表检索数据时出现以下异常: 中发生“System.InvalidOperationException”类型的异常 OHR.Repository.dll,但未在用户代码中处理 其他信息:模型运行时无法使用上下文 正在创建。如果使用上下文,则可能引发此异常 在OnModelCreating方法中,或者如果使用相同的上下文实例 由多个线程并发访问。请注意,实例成员 DbContext的类和相关类不能保证是线程安全的 此错误发生在我在名为MovieExists的方法中运行的第一个数据库查询上: MovieRepository.cs:C# 存储库错误-在创建模型时无法使用上下文,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,尝试从注册表检索数据时出现以下异常: 中发生“System.InvalidOperationException”类型的异常 OHR.Repository.dll,但未在用户代码中处理 其他信息:模型运行时无法使用上下文 正在创建。如果使用上下文,则可能引发此异常 在OnModelCreating方法中,或者如果使用相同的上下文实例 由多个线程并发访问。请注意,实例成员 DbContext的类和相关类不能保证是线程安全的 此错误发生在我在名为MovieExists的方法中运行的第一个数据库查询上:
private readonly ApplicationDbContext _context;
public MovieRepository(ApplicationDbContext context)
{
this._context = context;
}
public bool MovieExists(string MovieUrl)
{
try
{
bool result;
using (_context)
{
// The next line causes the exception
result = _context.Movies.Any(p => p.Url == MovieUrl);
}
return result;
}
catch (Exception e)
{
throw;
}
}
我的上下文.cs
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
public virtual DbSet<Movie> Movies { get; set; }
}
public类ApplicationDbContext:IdentityDbContext
{
公共应用程序上下文()
:base(“DefaultConnection”,throwifvv1schema:false)
{
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
基于模型创建(modelBuilder);
}
公共虚拟数据库集电影{get;set;}
}
我使用的是EF6,虽然我有异步EF任务,但第一个任务没有使用任何异步调用,所以我不认为我试图在多个线程上使用上下文
我假设我没有正确地实例化上下文,但看不到如何解决问题
谢谢修复,问题是我将ApplicationDbContext\u上下文设置为只读。删除readonly修复了此问题。如果您只阅读(即:_context.Movies.Any),则不应出现此问题。通常,对于repo模式,readonly DbContext是从uow声明的,您可以将uow注入repo,以使用内部引用持久化数据。