实体框架6代码优先迁移 - 生产的多个分支

时间:2014-07-10 20:45:01

标签: entity-framework ef-code-first entity-framework-6 ef-migrations

在我的项目中,我们有一个分支模型,它有一个单独的开发分支,每个版本都有一个单独的分支。它可能看起来像这样:

dev         ______       ______
           /      \     /      \
master  --+---+----+---+---+----+----+--- (...)
           r1  \______/  r2 \_______/

所以我们开发dev将它合并到master,然后我们创建一个release分支(r1,r2,...)。

我们希望使用EF 6(手动非自动)迁移,但我们有一个问题,我们不知道如何回答。

想象一下:

dev         _(1)__       ____(4)
           /      \     /      \
master  --+---+----+---+---+----+-(5)*-+--- (...)
           r1  \_(2)__/  r2 \(3)______/

每个号码都是迁移。它们已被添加到每个分支的源代码控制中并已应用于我们项目的生产实例的数据库(我们支持多个版本一段时间仅用于修复)因此我们无法降级它们,它们只能进入Up()。星号标志着我们想要分析的时间点。我们希望迁移以这种方式工作:

  • r1数据库仅应用了迁移(2)
  • r2数据库已应用(1),(2)和(3)
  • master数据库已应用(1),(2),(4)和(5)
  • dev数据库已应用(1),(2)和(4)

此外:

  • 我们不能在数据库中丢失一些数据
  • 必须可以将r1数据库更新为r2(或任何其他未来版本)数据库,且没有错误,因此它与所有r2数据库(创建为r2或从早期版本更新)具有相同的数据库结构它的代码第一个模型。

能做到吗?如果是,怎么样?

如果您需要更多详情,请询问。

1 个答案:

答案 0 :(得分:13)

我可以试着解释一下你在每种情况下可以做些什么,但它相当复杂,我不能解释它,以及它在这里解释:

Code First Migrations in Team Environments

虽然情况复杂,但您必须经常参考此文档来合并分支机构,如果您按照本文档进行操作,则会发现它会解决您的所有问题。

免责声明:我知道SO应该是自包含的,但解释是如此复杂和漫长,我甚至无法在这里添加摘要。我希望链接的MSDN文档不会消失。