尝试从我的注册表中检索数据时,我收到以下异常:
类型' 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任务,但第一个没有使用任何异步调用,所以我不认为我试图在多个线程上使用上下文
我认为我没有正确地实例化上下文,但却看不出如何解决问题。
由于
答案 0 :(得分:1)
修正了问题是我只读取了ApplicationDbContext _context。删除readonly修复了问题。