我正在使用Entityframework和使用数据库的存储库模式。我尝试连接数据库时收到以下错误
System.Data.Entity.Infrastructure.UnintentionalCodeFirstException未被用户代码处理 的HResult = -2146233079
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
我该如何解决这个问题?
答案 0 :(得分:5)
如果您尝试连接到现有数据库但EF尝试先执行代码,则应按照这个简单的步骤来防止此错误。
InnerException
另一方面,如果您没有看到第4步的屏幕,请确保已删除项目的所有连接字符串。
答案 1 :(得分:0)
对我来说,问题在于它本身是 OnModelCreating 方法。因此,我只是从继承了 DbContext 形式的DB Model类中删除了此方法,并且一切正常。我猜它使用了基类的方法,而不是使用异常抛出来覆盖它。
我在Google上浏览了一下,发现该方法通常被调用一次,以将表映射到模型,其结果保存在Cache中,如果禁用了cache,则会重复调用此方法。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}