背景:在我创建一个新的Model类并更改现有的Model类之前,一切都进展顺利。我成功迁移了。
情况是我每次构建项目时都必须运行add-migration和update-database以避免此异常。我不知道是怎么回事。请帮忙。
附加:自动迁移设置为true。我检查了_MigrationHistory表,每次迁移都在那里
答案 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);