【问题标题】:Fluentmigrator in database schema数据库模式中的 Fluentmigrator
【发布时间】:2022-01-19 08:56:16
【问题描述】:

我在我的 Visual Studio 项目中使用 Fluentmigrator 来版本和迁移单个 MS SQL Server 数据库。

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

我看到这可能通过覆盖元数据来实现: https://fluentmigrator.github.io/articles/version-table-metadata.html

下一步是使用目标架构执行 sql 脚本

Execute.EmbeddedScript("...") 

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

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

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

【问题讨论】:

    标签: c# .net-core database-schema fluent-migrator


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-26
      • 2022-12-17
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      相关资源
      最近更新 更多