C# 自定义FluentMigrator Postgres VersionInfo架构
我正在尝试将FluentMigrator与PostgreSQL结合使用 我让它成功地运行迁移,但是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 :
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这真是太久了,我想我从来没有这样做过;我甚至不知道那个修补工程在哪里。