【问题标题】:nhibernate + migrations workflownhibernate + 迁移工作流程
【发布时间】:2009-10-22 10:58:21
【问题描述】:

我希望围绕 NHibernate 和相对频繁更改的架构改进我的工作流程,以及如何最好地处理这个问题 - 我希望将相同的解决方案应用于生产系统,所以我认为我需要一个迁移引擎而不是只是架构更新。

我想知道的是如何尽可能优化工作流程,以便我做的工作尽可能少,以使我的数据库与我的域模型同步。脚本的 tarantino 方法看起来不错,但似乎没有办法从我的 nHibernate 映射生成更新脚本,所以我只能手工制作脚本或使用 redgate sql compare like 工具。在脚本生成阶段,我有什么遗漏可以让生活更轻松吗?

谢谢, 克里斯

【问题讨论】:

    标签: database nhibernate version-control migration


    【解决方案1】:

    我自己没有使用过这些migration tools for .net,但是几年前在我的业余时间尝试 Ruby on Rails 时,与我们在工作中使用的 t-sql 脚本相比,我看到了迁移的好处时间。

    【讨论】:

    • 感谢您的建议,但是我的问题更多是关于优化工作流程而不是可用的工具...
    【解决方案2】:

    在我最近参与的一个项目中,我们发现迁移与 VCS 分支和 NHibernate 相结合可能会导致一些令人头疼的问题和缺点。

    我们所做的是设置 NHibernate 以在每次自动构建(用于开发环境)以及一些数据加载时生成模式。

    对于生产环境,我们有一个基于当前架构和所需架构的脚本,它生成了一个包含必要字段和修改的迁移。

    【讨论】:

    • 您是否自动生成了这个从开发到生产的脚本?
    【解决方案3】:

    我们使用SQL Compare。这是有偿的,但值得投资恕我直言。保持每个生成的脚本井井有条 - 即时间戳 - 这样您就可以很好地为任何已发布版本生成数据库。

    这是我们平时的流程

    1. 在 DEV 期间,我们有两个数据库“ProjectName”和“ProjectName_TEST”。
    2. 对于每个架构更改,我们都会生成 (NHibernate) 一个全新的数据库并替换“ProjectName_TEST”。
    3. 我们使用 SQL 比较来更新“ProjectName”(因此将所有开发数据保留在其中)
    4. 在发布时,我们将“ProjectName_TEST”与生产数据库进行比较并生成更新脚本。

    查看command line options,因为它们非常方便地通过 VS 构建事件自动执行该过程。

    【讨论】:

      猜你喜欢
      • 2015-07-04
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-03
      • 1970-01-01
      相关资源
      最近更新 更多