自创建数据库以来,支持“ScopoContext”上下文的模型已更改。考虑使用代码优先迁移来更新数据库

时间:2016-09-22 07:41:24

标签: asp.net ef-code-first entity-framework-6

背景:在我创建一个新的Model类并更改现有的Model类之前,一切都进展顺利。我成功迁移了。

情况是我每次构建项目时都必须运行add-migration和update-database以避免此异常。我不知道是怎么回事。请帮忙。

附加:自动迁移设置为true。我检查了_MigrationHistory表,每次迁移都在那里

1 个答案:

答案 0 :(得分:3)

您必须向DbContext班级添加代码:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    Database.SetInitializer<YourDbContext>(null);
    base.OnModelCreating(modelBuilder);
} 

编辑:
首次创建模型时,我们运行DatabaseInitializer来执行创建数据库(如果不存在)或添加种子数据等操作。

默认DatabaseInitializer尝试将使用模型所需的数据库模式与存储在使用数据库创建的EdmMetadata表中的模式的散列进行比较(当Code First是创建的时候)数据库)。

现有数据库不会有EdmMetadata表,因此不会有哈希,如果缺少该表,今天的实现将抛出。

我们将在发布失败版本之前更改此行为,因为它是默认版本。在此之前,现有数据库通常不需要任何数据库初始化程序,因此可以通过调用它来关闭上下文类型:

Database.SetInitializer<YourDbContext>(null);