/ / Zmień nazwy kolumn MigrationsHistoryTable w EF Core - podmiot-framework-core

Zmień nazwy kolumn MigrationsHistoryTable w EF Core - podmiot-struktura-rdzeń

Mam ustandaryzowane wszystkie nazwy tabel i kolumnw mojej bazie danych EF Core, aby użyć snake_case. Byłem w stanie zmienić nazwę i schemat tabeli historii migracji, aby pasowały do ​​reszty bazy danych, ale nie jestem w stanie znaleźć sposobu na zmianę kolumn z MigrationId do migration_id i ProductVersion do product_version.

Wszelkie pomysły, jak to zrobić?

Odpowiedzi:

2 dla odpowiedzi № 1

Oto przykład, jak to zrobić na serwerze SQL.

Najpierw utwórz niestandardową implementację SqlServerHistoryRepository nadrzędny ConfigureTable.

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");
}
}

Następnie zamień zamień usługę na niestandardową implementację.

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