我正在寻找一种可以在 TFS 内进行数据库迁移和版本控制的工具(最好是开源的),并且能够在部署/构建期间自动部署它。
背景
我们开发了一个经常更新的应用程序,有时会更改数据库,有时不会更改。该数据库在 Oracle 11g 上运行,还有一个 Sqlite 数据库可以运行测试。我们将 NHibernate 与 Fluent-NHibernate 结合使用作为 ORM(Fluent-NHibernate 用于映射)。
现在的情况
此时数据库更改是手动完成的。更改用于创建数据库的流畅映射并编写 SQL 脚本来更改/删除/创建我们需要的任何内容。要进入测试/验收/生产,我们针对不同的配置进行构建,然后将内容复制到特定服务器并在数据库上运行特定的 SQL 脚本。
缺点
NHibernate 的 schemaupdate 不允许破坏性更新,因此如果我们正在寻找 NHibernate 解决方案,则必须手动完成。
首选情况
以上是一个可行的解决方案,但现在我们需要对这些更改进行版本化,以便我们可以在使用Expand/Contract部署新版本时向上/回滚(如果需要)。当我们将新版本部署到数据库时,最好自动完成。
问题
- 是否有使用 Expand 和 Contract 生成架构的迁移工具
- 它是否适用于 Oracle 11g、SqlLite 和 SqlServer
- 可以继续使用 NHibernate / Fluent-NHibernate
- 自动部署特定构建的好方法(不是必须的,有足够的工具来做到这一点,但也许有一些可以做所有事情的好方法)
被调查
- 圆屋E
- 没有回滚。
- 无法让它与我们的映射一起使用。
- FluentMigrator
- 不能与 NHibernate 映射结合使用它自己的 Fluent 接口。
- 适用于 Oracle 的 Red-Gate 部署套件
- 工具不能轻易地与我们的环境集成。
我希望这很清楚,如果不能随意发表评论