数据库模式中的 Fluentmigrator

Fluentmigrator in database schema

我在 Visual Studio 项目中使用 Fluentmigrator 对单个 MS SQL 服务器数据库进行版本控制和迁移。

在那个数据库中,有多个客户专用的数据库模式, 并希望彼此独立地迁移它们, 因此每个模式都会有一个专用的 VersionInfo table.

我看到这可能是可行的,通过覆盖元数据: https://fluentmigrator.github.io/articles/version-table-metadata.html

下一步是使用

针对目标架构执行sql脚本
Execute.EmbeddedScript("...") 

迁移中的语句class, 但我没有看到 InSchema 成员方法。

(不幸的是我需要使用嵌入式脚本,因为我有复杂的时间 table 结构设置。)

我如何 运行 Execute.EmbeddedScript 针对不同的模式? 架构名称通过命令行参数传递到我的 Fluent 迁移器应用程序。

很高兴它的开源,在代码中找到了它。 EmbeddedScript 函数有第二个可选参数,它是一个字典,您可以在其中列出要在要执行的 sql 代码中替换的标记。

这是它实现的地方,但从那以后它得到了改进 https://github.com/fluentmigrator/fluentmigrator/issues/625 现在令牌密钥必须在 sql 脚本中的 $(mytokentoreplace) 中, 以及传递给 Embeddedscript 的 C# 字典中的“mytokentoreplace”,以将标记替换为您想要的任何内容。

您可以使用依赖注入将字典传递给迁移 类: https://fluentmigrator.github.io/articles/obsolete/app-context.html

然后打电话 Execute.EmbeddedScript("mysqlscript.sql", service.Tokens); 替换令牌,在我的例子中是模式。