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

pin*_*cer 11 entity-framework ef-code-first ef-migrations entity-framework-6

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

dev         ______       ______
           /      \     /      \
master  --+---+----+---+---+----+----+--- (...)
           r1  \______/  r2 \_______/
Run Code Online (Sandbox Code Playgroud)

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

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

想象一下:

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

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

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

此外:

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

可以这样做吗?如果有,怎么样?

如果您需要更多详细信息,请询问.

Jot*_*aBe 14

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

团队环境中的代码优先迁移

虽然它很复杂,但你必须经常参考这个文档来合并分支,如果你按照这个文档,你会看到它解决了你所有的问题.

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