gpt4 book ai didi

c# - 自定义 FluentMigrator Postgres VersionInfo Schema

转载 作者:行者123 更新时间:2023-12-05 04:15:25 28 4
gpt4 key购买 nike

我正在尝试将 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

最佳答案

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

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

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

关于c# - 自定义 FluentMigrator Postgres VersionInfo Schema,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32171831/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com