在我的项目中,我们有一个分支模型,其中拥有独立的开发分支和每个发布版本的单独分支。可能看起来像这样:
dev ______ ______
/ \ / \
master --+---+----+---+---+----+----+--- (...)
r1 \______/ r2 \_______/
因此,我们在dev分支上开发,合并到master分支,然后创建一个发布分支(r1,r2,...)。
我们想使用EF 6手动迁移(而非自动迁移),但有一个问题我们不知道如何回答。
想象一下:
dev _(1)__ ____(4)
/ \ / \
master --+---+----+---+---+----+-(5)*-+--- (...)
r1 \_(2)__/ r2 \(3)______/
每个数字都代表一个迁移。它们已被添加到每个分支的源代码控制中,并已应用于我们项目在生产环境中的数据库(我们支持一些时间的多个版本只是为了修复)因此我们无法降级它们,它们只能向上升级。星号标志着我们要分析的时间点。我们希望迁移按照以下方式工作:
- r1 数据库只有迁移 (2) 已应用
- r2 数据库已应用迁移 (1), (2) 和 (3)
- master 数据库已应用迁移 (1), (2), (4) 和 (5)
- dev 数据库已应用迁移 (1), (2) 和 (4)
此外:
- 我们不能失去任何数据库中的数据
- r1 数据库必须能够被更新至 r2 (或任何将来的版本)数据库而没有错误,以便它具有与其代码 first 模型相对应的所有 r2 数据库(作为 r2 创建或从早期版本更新)的相同数据库结构。
这可以做到吗?如果可以,怎么做?
如果需要更多细节,请询问。