Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database nhibernate+;迁移工作流_Database_Nhibernate_Version Control_Migration - Fatal编程技术网

Database nhibernate+;迁移工作流

Database nhibernate+;迁移工作流,database,nhibernate,version-control,migration,Database,Nhibernate,Version Control,Migration,我希望围绕NHibernate和一个相对频繁变化的模式完善我的工作流程,以及如何最好地处理这个问题——我希望将相同的解决方案应用于生产系统,因此我认为我需要一个迁移引擎,而不仅仅是模式更新 我想知道的是如何尽可能地优化工作流,以便尽可能少地工作,使数据库与域模型同步。tarantino脚本方法看起来不错,但似乎没有一种方法可以从我的nHibernate映射生成更新脚本,所以我只能手工编写脚本或使用redgate sql compare-like工具。在脚本生成阶段,我是否遗漏了一些可以让生活更轻

我希望围绕NHibernate和一个相对频繁变化的模式完善我的工作流程,以及如何最好地处理这个问题——我希望将相同的解决方案应用于生产系统,因此我认为我需要一个迁移引擎,而不仅仅是模式更新

我想知道的是如何尽可能地优化工作流,以便尽可能少地工作,使数据库与域模型同步。tarantino脚本方法看起来不错,但似乎没有一种方法可以从我的nHibernate映射生成更新脚本,所以我只能手工编写脚本或使用redgate sql compare-like工具。在脚本生成阶段,我是否遗漏了一些可以让生活更轻松的东西

谢谢,
Chris

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

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

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

对于生产环境,我们有一个基于当前模式和所需模式的脚本,它生成了一个带有必要字段和修改的迁移。它是有报酬的,但值得投资。将生成的每个脚本组织得井井有条(即时间戳),这样您就可以为任何发布版本生成数据库

这是我们通常的流程

  • 在开发过程中,我们有两个数据库“ProjectName”和“ProjectName\u TEST”
  • 对于每一个模式更改,我们都会生成(NHibernate)一个全新的数据库并替换“ProjectName\u TEST”
  • 我们使用SQL Compare来更新“ProjectName”(因此将所有开发数据都保存在其中)
  • 在发布时,我们将“ProjectName_TEST”与生产数据库进行比较,并生成一个更新脚本

  • 查看一下,因为它们非常方便通过VS build events自动化流程。

    感谢您的建议,但是我的问题更多的是优化工作流,而不是提供什么工具……您是否自动生成此开发到生产脚本?