EFコアのMigrationsHistoryTable列名を変更する

entity-framework-core

質問

私はsnake_caseを使うために、EFコアデータベースに標準化されたすべてのテーブル名とカラム名を持っています。私は、データベースの残りの部分と一致するようにマイグレーション履歴テーブル名とスキーマを変更することができましたが、私はから列を変更する方法を見つけることができないのですMigrationIdするmigration_idProductVersionproduct_version

どのようにこれを行うことができるかに関する任意のアイデア?

受け入れられた回答

SQL Server上で実行する方法の例を次に示します。

まず、 ConfigureTableオーバーライドするSqlServerHistoryRepositoryカスタム実装を作成します。

class MyHistoryRepository : SqlServerHistoryRepository
{
    public MyHistoryRepository(
        IDatabaseCreator databaseCreator, IRawSqlCommandBuilder rawSqlCommandBuilder,
        ISqlServerConnection connection, IDbContextOptions options,
        IMigrationsModelDiffer modelDiffer,
        IMigrationsSqlGenerator migrationsSqlGenerator,
        IRelationalAnnotationProvider annotations,
        ISqlGenerationHelper sqlGenerationHelper)
        : base(databaseCreator, rawSqlCommandBuilder, connection, options,
            modelDiffer, migrationsSqlGenerator, annotations, sqlGenerationHelper)
    {
    }

    protected override void ConfigureTable(EntityTypeBuilder<HistoryRow> history)
    {
        base.ConfigureTable(history);

        history.Property(h => h.MigrationId).HasColumnName("migration_id");
        history.Property(h => h.ProductVersion).HasColumnName("product_version");
    }
}

次に、サービスをカスタム実装に置き換えます。

protected override void OnConfiguring(DbContextOptionsBuilder options)
    => options
        .UseSqlServer(connectionString)
        .ReplaceService<SqlServerHistoryRepository, MyHistoryRepository>();


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ