在Oracle / Sql Server和Sqlite上执行数据库迁移的解决方案

时间:2012-09-18 13:57:39

标签: c# sql-server oracle sqlite database-versioning

我正在寻找可以在TFS内部进行数据库迁移和版本控制的工具(最好是开源),并且能够在部署/构建期间自动部署它。

背景

我们开发了一个经常更新的应用程序,有时会更改数据库,有时也没有。数据库在Oracle 11g上运行,还有一个Sqlite数据库用于运行测试。我们将NHibernate与Fluent-NHibernate结合使用作为ORM(Fluent-NHibernate用于映射)。

现状

此时数据库更改是手动完成的。更改数据库创建的流畅映射并编写SQL脚本以更改/删除/创建我们需要的任何内容。 要进入测试/接受/生产,我们针对不同的配置构建,然后将内容复制到特定服务器并在数据库上运行特定的SQL脚本。

缺点

来自NHibernate的schemaupdate不允许破坏性更新,因此如果我们正在寻找NHibernate解决方案,必须手动完成。

优先情况

以上是一个可行的解决方案,但现在我们需要对这些更改进行版本控制,以便我们可以在使用Expand/Contract部署新版本时进行/回滚(如果需要)。当我们将新版本部署到数据库时,它会自动完成。

问题

  1. 是否有迁移工具使用Expand和Contract生成模式
  2. 它适用于Oracle 11g,SqLite和SqlServer
  3. 可以继续使用NHibernate / Fluent-NHibernate
  4. 自动部署特定构建的好方法(不是必须的,有足够的工具来做到这一点,但也许可以做一些可以做到的事情)
  5. 考察

    我希望这很清楚,如果不随意发表评论

0 个答案:

没有答案