3

我正在尝试将 FluentMigrator 与 PostgreSQL 一起使用。

我让它成功运行迁移,但是VersionInfo表始终在public模式中。我在FluentMigrator Wiki上读到我可以覆盖模式名称,但它不起作用。

这是我为覆盖设置而编写的课程:

namespace YARA.Migrations
{
    using FluentMigrator.VersionTableInfo;

    [VersionTableMetaData]
    public class YaraVersionTable : DefaultVersionTableMetaData
    {
        public override string SchemaName
        {
            get { return "dbo"; }
        }

        public override string TableName
        {
            get
            {
                return "MigrationInfo";
            }
        }
    }
}

这是运行迁移后数据库的屏幕截图;架构或更改表名都不会对 VersionInfo 表生效。

想法?

截屏

4

1 回答 1

2

在我的情况下,您必须创建您的课程:

[VersionTableMetaData]
public class CustomMetadataTable : DefaultVersionTableMetaData
{
    public override string TableName => "__migrations_metadata";
}

然后将其添加到您的服务中

var serviceProvider = new ServiceCollection()
            .UseStandardConfiguration()
            .AddFluentMigratorCore()
            .ConfigureRunner(rb => rb
                .AddPostgres92()
                .WithGlobalConnectionString(c => c.GetService<IConfiguration>().GetConnectionString("THECONNECTION_STRING"))
                .ScanIn(THEASSEMBLY).For.Migrations())
            .AddLogging(lb => lb.AddFluentMigratorConsole())
            .AddTransient<IVersionTableMetaData, CustomMetadataTable>()
            .BuildServiceProvider(false);

只要确保是您注册的最后一件事(就在最后一行的正上方)

于 2020-04-23T06:41:45.907 回答