存储库错误——在创建模型时不能使用上下文
本文关键字:不能 上下文 创建 错误 存储 模型 | 更新日期: 2023-09-27 18:18:18
当尝试从注册表检索数据时,我得到以下异常:
类型为'System '的异常。InvalidOperationException'发生在在用户代码
中未处理OHR.Repository.dll附加信息:当模型处于状态时,不能使用上下文被创建。如果使用了上下文,则可能引发此异常在OnModelCreating方法中,或者在相同的上下文实例中由多个线程并发访问。请注意,实例成员的DbContext和相关类不能保证是线程安全的。
这个错误发生在我在MovieExists方法中运行的第一个数据库查询:
MovieRepository.cs:
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;
}
}
我context.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; }
}
我正在使用EF6,而我有异步EF任务,这是第一个不使用任何异步调用,所以我不认为我试图使用多线程上下文。
我假设我没有正确实例化上下文,但不知道如何解决这个问题。
谢谢
修复,问题是我使ApplicationDbContext _context只读。删除readonly修复了这个问题。