我使用EF代码优先方法。
我有一个班级:
public class Cat {
// ...
}
然后我为它们添加一些属性和迁移。所以我有几个现有的迁移。然后我创建了抽象类:
public abstract class Animal {
// ...
}
继承动物猫:
public Cat : Animal {
// ...
}
当我这样做,并运行添加迁移时,我遇到了无法解决的问题。 EF给了我一个错误:
无法生成显式迁移,因为以下内容 显式迁移正在等待:[...]。应用待定的显式 尝试生成新的显式迁移之前的迁移。
这是因为架构存储在__MigrationHistory中。当EF尝试将当前模式与从数据库中获取的模式(来自__MigrationHistory)进行比较时,它会失败。
当我放弃所有迁移并从头开始创建数据库时,一切都很好。
但我不希望在架构更改时删除整个数据库。
如何使用EF处理架构更改?
这是similar post,但没有任何好的解决方案。
答案 0 :(得分:1)
如果您运行Add-Migration
并且未运行Update-Database
,请运行它。
但有时你会运行以下命令:
PM>add-migration migration1
然后对您的模型进行一些更改,在这种情况下,如果您想要添加其他迁移,则会出现提及的错误,因此您有2个选项:
Update-Database
以将migration1的挂起更改应用于数据库,然后添加新迁移。add-migration migration1 -force
将所有待处理的迁移添加为migration1,然后运行update-database
。答案 1 :(得分:0)
在运行Add-Migration
之前尝试运行Update-Database