存储库错误——在创建模型时不能使用上下文

本文关键字:不能 上下文 创建 错误 存储 模型 | 更新日期: 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修复了这个问题。