我正在尝试将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表生效。
思想?
答案 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);
只要确定是您注册的最后一件事(就在最后一行的正上方)