ここでは、SQL Server上で実行する方法の例を示します。
最初にSqlServerHistoryRepository
のカスタム実装を作成して、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");
}
}
その後、あなたのカスタム実装でサービスを置き換える置き換えます。
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options
.UseSqlServer(connectionString)
.ReplaceService<SqlServerHistoryRepository, MyHistoryRepository>();
を見ると、 '(すなわち、弁別フィールドの種類を追加することで)同じテーブル上で複数のDBコンテキストの1移行テーブルを使用するための簡単な方法を持っていないようですSqlServerHistoryRepository'? – Tseng
移行IDが競合していない限り(2番目のタイムスタンプとユーザーの名前にタイムスタンプが付けられている可能性はほとんどありません)、弁別子フィールドは必要ありません。 – bricelam