gpt4 book ai didi

c# - 使用 FluentMigrator 更改约定

转载 作者:行者123 更新时间:2023-11-30 22:08:52 25 4
gpt4 key购买 nike

在 FluentMigrator 中覆盖默认迁移约定的合适位置在哪里?应该与运行者一起完成,还是在迁移中完成?还是别处?

具体来说,我想更改索引命名约定以匹配 ServiceStack 使用的命名约定(例如 IX_Foo_Bar => uidx_foo_bar)。

我看到方法 MigrationBase.ApplyConventions(IMigrationContext ) 其中 IMigrationContext 有一个 IMigrationConventions 属性...我应该创建自己的 MigrationContext 在迁移中?如果我希望所有迁移都使用相同的约定怎么办?

最佳答案

这是我发现改变约定的唯一方法。您需要创建一个抽象类来扩展“FluentMigrator.Migration”并更改其约定。然后,您所有的迁移类都应该扩展此类而不是 FluentMigrator.Migration。

public abstract class BaseMigration : Migration
{
// Update conventions for up migration
public override void GetUpExpressions(IMigrationContext context)
{
this.UpdateConventions(context);
base.GetUpExpressions(context);
}

// Update conventions for down migration
public override void GetDownExpressions(IMigrationContext context)
{
this.UpdateConventions(context);
base.GetDownExpressions(context);
}

// Change the conventions
public void UpdateConventions(IMigrationContext context)
{
var conventions = ((MigrationConventions)context.Conventions);
conventions.GetIndexName = index => DefaultMigrationConventions.GetIndexName(index).Replace("IX_", "uidx_");
}
}

关于c# - 使用 FluentMigrator 更改约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21996193/

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