合并多个迁移实体框架代码优先

时间:2016-08-14 21:45:24

标签: c# entity-framework

我有以下情况 -

我在一个分支机构工作,我已经添加了3个新的迁移 - 对于惯例,我将它们命名为

Migration A
Migration B
Migration C

当尝试与master合并时,发现有4个新的迁移,这些迁移不是按时间顺序排序的(从另一个分支合并)。我的意思是以下

new Migration from master 1
existing Migration in both branches
existing Migration in both branches
new Migration from master 2
new Migration from master 3
new Migration from master 4
existing Migration in both branches
existing Migration in both branches

合并时我得到以下情况

new Migration from master 1
existing Migration in both branches
existing Migration in both branches
new Migration from master 2
new Migration from master 3
new Migration from master 4
existing Migration in both branches
existing Migration in both branches
Migration A
Migration B
Migration C

现在很明显,实体框架不允许我更新数据库,因为它认为模型是错误的 - 在添加新迁移时,它会从master的上述4次新迁移中生成更改。

真正的问题是我无法恢复到现有的迁移,然后重新支持更新元数据,因为它们不是按时间顺序排序的 (根据另一个answer中的已接受question建议)。

我已尝试update-database -target返回new Migration from master 1之前的迁移,然后Add-Migration <timestamp> new Migration from master 1重新支持它,但我得到Unable to generate an explicit migration because the following explicit migrations are pending....例外。

我真的不想添加空白迁移来修复此问题,而是找到一个干净而且很好的解决方案。

1 个答案:

答案 0 :(得分:1)

经过一些研究后,解决方案是在最后一次迁移之前将数据库更新为迁移,然后重新构建上次迁移。

update-database -target Migration B
add-migration <timestamp>_Migration C