自定义FluentMigrator Postgres VersionInfo架构

时间:2015-08-23 21:41:57

标签: c# postgresql fluent-migrator

我正在尝试将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表生效。

思想?

screenshot

1 个答案:

答案 0 :(得分:0)

就我而言,您必须创建自己的课程:

[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);

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