使用fluent n-hibernate生成sql脚本,而不是自动更新db,用于生产环境
-
24-12-2019 - |
题
我已经浏览了不同的文档,但没有找到任何解决这个问题的东西。我正在考虑在未来的项目中使用fluentmigrator,尽管对于暂存/生产实践必须通过dba进行架构更新。我被允许为其他环境做我想做的事情,如测试,开发和本地。
如果我必须编写脚本来进行更改,则该工具的目的完全失败。然而,它发生在我身上,如果我没有呢?所以我的问题是这样的:是否有可能让fluent migrate将sql脚本吐出到文件中,而不是实际运行事务?
在我的实验中,我创建了一个控制台应用程序,它使用与主项目相同的DAL程序集,并利用migrator逻辑,因此每当我运行控制台应用程序时,它都会从头开始更新db,我们使用TeamCity,所以认为让它运行应用程序并将脚本(作为工件)放在文件夹中作为DBA在环境中更新模式的构建过程中的一个步骤可能会很酷。
解决方案
该 FluentMigrator命令行运行器 将生成SQL脚本,而不将更改应用于数据库,如果您使用:
--preview=true
--output=true
--outputFilename=output1.sql
并且,如果您安装 FluentMigrator.工具包 除了 流动装置包, ,您将可以从迁移项目的构建输出目录访问命令行运行器(Migrate.exe
).
注: 生成的脚本将包含插入到FluentMigrator版本表中。
其他提示
After reading Command Line Runner Options I'd use --verbose=true to output the sql script and --output to save it to a file. There seems to be no 'dry run' option however - you'll need to run the migration in some preproduction environment to obtain the script.
Give it a shot as I've admittedly never tried it.