我正在尝试在PostgreSQL中使用FluentMigrator。
我让它成功地运行了迁移,但是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表生效。
有什么想法?

发布于 2020-04-23 14:41:46
你必须创建你的类,在我的例子中:
[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);只需确保是您注册的最后一件事(恰好在最后一行的上方)
https://stackoverflow.com/questions/32171831
复制相似问题