Entity framework Entitfy框架:当我更改模式时,一切都被破坏了

Entity framework Entitfy框架:当我更改模式时,一切都被破坏了,entity-framework,Entity Framework,我使用EF和代码优先的方法 我有一门课: public class Cat { // ... } 然后我为它们添加一些属性和迁移。因此,我有几个现有的迁移。然后创建抽象类: public abstract class Animal { // ... } 从动物身上继承一只猫: public Cat : Animal { // ... } 当我这样做,并运行添加迁移时,我遇到了无法解决的问题。EF给了我一个错误: 由于以下原因,无法生成显式迁移 显式迁移挂起:[……]。应用挂起的显式 在尝试

我使用EF和代码优先的方法

我有一门课:

public class Cat {
// ...
}
然后我为它们添加一些属性和迁移。因此,我有几个现有的迁移。然后创建抽象类:

public abstract class Animal {
// ...
}
从动物身上继承一只猫:

public Cat : Animal {
// ...
}
当我这样做,并运行添加迁移时,我遇到了无法解决的问题。EF给了我一个错误:

由于以下原因,无法生成显式迁移 显式迁移挂起:[……]。应用挂起的显式 在尝试生成新的显式迁移之前进行迁移

这是因为模式存储在_MigrationHistory中。当EF尝试将当前模式与从数据库(从_MigrationHistory)获取的模式进行比较时,它会失败

当我放弃所有迁移并从头创建数据库时,一切都很好

但我不想在模式更改时删除整个数据库

如何使用EF处理模式更改


这里是,但没有任何好的解决方案。

在运行添加迁移之前尝试运行更新数据库

如果您运行了
添加迁移
,但没有运行
更新数据库
,请运行它

但有时您会运行以下命令:

PM>add-migration migration1
然后对您的模型进行一些更改,在本例中,如果您想添加另一个迁移,则会出现上述错误,因此您有2个选项:

  • 运行
    updatedatabase
    将迁移1的挂起更改应用于数据库,然后添加新迁移
  • 运行
    addmigrationmigration1-强制将所有挂起的迁移添加为migration1,然后运行
    updatedatabase