实体框架:当我更改架构时,一切都被破坏了

时间:2014-10-13 08:24:54

标签: entity-framework

我使用EF代码优先方法。

我有一个班级:

public class Cat {
// ...
}

然后我为它们添加一些属性和迁移。所以我有几个现有的迁移。然后我创建了抽象类:

public abstract class Animal {
// ...
}

继承动物猫:

public Cat : Animal {
// ...
}

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

  

无法生成显式迁移,因为以下内容   显式迁移正在等待:[...]。应用待定的显式   尝试生成新的显式迁移之前的迁移。

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

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

但我不希望在架构更改时删除整个数据库。

如何使用EF处理架构更改?

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

2 个答案:

答案 0 :(得分:1)

如果您运行Add-Migration并且未运行Update-Database,请运行它。

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

PM>add-migration migration1

然后对您的模型进行一些更改,在这种情况下,如果您想要添加其他迁移,则会出现提及的错误,因此您有2个选项:

  1. 运行Update-Database以将migration1的挂起更改应用于数据库,然后添加新迁移。
  2. 运行add-migration migration1 -force将所有待处理的迁移添加为migration1,然后运行update-database

答案 1 :(得分:0)

在运行Add-Migration

之前尝试运行Update-Database