Entity framework Entitfy框架:当我更改模式时,一切都被破坏了
我使用EF和代码优先的方法 我有一门课:Entity framework Entitfy框架:当我更改模式时,一切都被破坏了,entity-framework,Entity Framework,我使用EF和代码优先的方法 我有一门课: public class Cat { // ... } 然后我为它们添加一些属性和迁移。因此,我有几个现有的迁移。然后创建抽象类: public abstract class Animal { // ... } 从动物身上继承一只猫: public Cat : Animal { // ... } 当我这样做,并运行添加迁移时,我遇到了无法解决的问题。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