C# 自定义FluentMigrator Postgres VersionInfo架构

C# 自定义FluentMigrator Postgres VersionInfo架构,c#,postgresql,fluent-migrator,C#,Postgresql,Fluent Migrator,我正在尝试将FluentMigrator与PostgreSQL结合使用 我让它成功地运行迁移,但是VersionInfo表始终位于public模式中。我在上读到,我可以覆盖架构名称,但它不起作用 下面是我编写的用于覆盖设置的类: namespace YARA.Migrations { using FluentMigrator.VersionTableInfo; [VersionTableMetaData] public class YaraVersionTable :

我正在尝试将FluentMigrator与PostgreSQL结合使用

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

下面是我编写的用于覆盖设置的类:

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";
            }
        }
    }
}
下面是运行迁移后db的屏幕截图;架构或更改表名都不会对VersionInfo表生效

想法


在我的例子中,您必须创建您的类:

[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);
var serviceProvider=new servicecolection()
.UseStandardConfiguration()
.AddFluentMigratorCore()
.ConfigureRunner(rb=>rb
.AddPostgres92()
.WithGlobalConnectionString(c=>c.GetService().GetConnectionString(“连接字符串”))
.ScanIn(THEASSEMBLY).For.Migrations())
.AddLogging(lb=>lb.AddFluentMigratorConsole())
.AddTransient()
.BuildServiceProvider(假);

只需确定你登记的最后一件事是什么(就在最后一行的正上方)

你有没有设法弄清这件事的真相?@Luke这真是太久了,我想我从来没有这样做过;我甚至不知道那个修补工程在哪里。