nhibernate + 迁移工作流程
Posted
技术标签:
【中文标题】nhibernate + 迁移工作流程【英文标题】:nhibernate + migrations workflow 【发布时间】:2009-10-22 10:58:21 【问题描述】:我希望围绕 NHibernate 和相对频繁更改的架构改进我的工作流程,以及如何最好地处理这个问题 - 我希望将相同的解决方案应用于生产系统,所以我认为我需要一个迁移引擎而不是只是架构更新。
我想知道的是如何尽可能优化工作流程,以便我做的工作尽可能少,以使我的数据库与我的域模型同步。脚本的 tarantino 方法看起来不错,但似乎没有办法从我的 nHibernate 映射生成更新脚本,所以我只能手工制作脚本或使用 redgate sql compare like 工具。在脚本生成阶段,我有什么遗漏可以让生活更轻松吗?
谢谢, 克里斯
【问题讨论】:
【参考方案1】:我自己没有使用过这些migration tools for .net,但是几年前在我的业余时间尝试 Ruby on Rails 时,与我们在工作中使用的 t-sql 脚本相比,我看到了迁移的好处时间。
【讨论】:
感谢您的建议,但是我的问题更多是关于优化工作流程而不是可用的工具...【参考方案2】:在我最近参与的一个项目中,我们发现迁移与 VCS 分支和 NHibernate 相结合可能会导致一些令人头疼的问题和缺点。
我们所做的是设置 NHibernate 以在每次自动构建(用于开发环境)以及一些数据加载时生成模式。
对于生产环境,我们有一个基于当前架构和所需架构的脚本,它生成了一个包含必要字段和修改的迁移。
【讨论】:
您是否自动生成了这个从开发到生产的脚本?【参考方案3】:我们使用SQL Compare。这是有偿的,但值得投资恕我直言。保持每个生成的脚本井井有条 - 即时间戳 - 这样您就可以很好地为任何已发布版本生成数据库。
这是我们平时的流程
-
在 DEV 期间,我们有两个数据库“ProjectName”和“ProjectName_TEST”。
对于每个架构更改,我们都会生成 (NHibernate) 一个全新的数据库并替换“ProjectName_TEST”。
我们使用 SQL 比较来更新“ProjectName”(因此将所有开发数据保留在其中)
在发布时,我们将“ProjectName_TEST”与生产数据库进行比较并生成更新脚本。
查看command line options,因为它们非常方便地通过 VS 构建事件自动执行该过程。
【讨论】:
以上是关于nhibernate + 迁移工作流程的主要内容,如果未能解决你的问题,请参考以下文章
NHibernate - 从 PGSQL 迁移到 MSSQL 时语法不正确
nHibernate标准ResultTransformer不工作