我已经看过了所有的选项上.NET Migrations Engine,发现使用的Rails风格的迁移引擎是最有趣的,主要是因为他们都写在一个数据库无关这种方式可以轻松应对不同的数据库平台。.NET的Rails风格的数据库迁移与功能分支
但是,我看到了一个突出的问题是他们都不来解决开箱:源代码控制分支。
场景
- 特征1上正在BRANCH1开发和添加一列到名为COLUMN1
- 特征2表上正在BRANCH2开发和添加一列以命名COLUMN2 相同的表
- 推出1.1由包括特征2,但特征1尚未完成
- 特征1完成并合并到主干
- 推出1.2制成,然而新的列1 FIEL d是走进了树干在版本1(绑在代码中直接释放1.1),因此不会在数据库中,当它被迁移
工具,如Migrator.NET得到更新,这个问题似乎是迁移版本与实际的软件版本相关,而不是SCC提交。但是,该属性必须添加到源代码管理中的代码中。我已经看到了使用日期而不是版本的例子,但这似乎并没有解决增量版本以外的问题。
与我发现的答案最接近的是Liquibase FAQ page,但是解决方案需要在.NET中使用Rails风格的框架进行代码更改(即使在Rik Migrations中,它的结构属性类似于liquibase更改日志文件):
Liquibase是否与分支机构合作?是的。由于每次更改都是独立的,所以在不同的 分支中进行的数据库更改将在下次运行Liquibase时运行。您 可能会碰到的语句运行的顺序有问题,但 你可以通过重新排序更改日志文件 很容易解决的问题。
什么是处理这个问题的典型方式?
如果这有什么差别,我使用Git源控制。注意我已经看到标题为Database migrations in a complex branching system的帖子,但它没有真正提供答案。