所以这就是故事。我们使用Entity Framework Code First迁移在源代码管理中有一个产品。为了这个问题,有两个分支,开发和生产。目前,开发分支有几个不在生产分支中的迁移,但它们依次从生产分支中的上一次迁移开始。
现在,我们需要对生产分支进行小的架构更改。我们通过添加迁移来实现此目的。然后将其发布到生产站点。
那么,我们如何将这些变化整合到开发分支中?开发分支中的迁移必然必须来自生产站点上的迁移,但我们只是在生产站点上插入了新的迁移。这意味着当我们合并到开发分支时,迁移会失败,因为存在无序迁移。
那么,在我的开发分支中,有没有办法从其他分支插入迁移,将现有迁移分流到列表中?
答案 0 :(得分:1)
我在合并来自不同开发者的更改时处理了这个问题。在对这个答案进行一些研究时,我遇到了this handy article,这可能比我能更好地解释它。唉,你跟我在一起了。有几点需要注意:
实体框架并不是每次都直接将数据库与您的类进行比较。相反,它会比较它生成的edmx
模型。
因此,在尝试更新
无法更新数据库以匹配当前模型,因为存在待处理的更改并且已禁用自动迁移...
虽然将实际执行更新。该错误指的是它所比较的快照(?)edmx
。
最简单的方法是添加空白'合并迁移'。以下是文章中的步骤:
确保已将本地代码库中的任何待定模型更改写入迁移。这一步确保您不会错过任何一个 生成空白迁移时的合理更改。
与源代码管理同步。
运行Update-Database以应用其他开发人员已签入的任何新迁移。
注意:如果没有从Update-Database命令收到任何警告 然后就没有其他开发人员的新迁移了 无需进行任何进一步的合并。
- 醇>
运行Add-Migration [pick_a_name] -IgnoreChanges(例如Add-Migration Merge -IgnoreChanges)。这会生成所有迁移 元数据(包括当前模型的快照)但将被忽略 在比较当前模型时检测到的任何变化 最后一次迁移中的快照(意味着你得到一个空白的Up和Down 法)。