カスタムの移行履歴テーブル
既定では、EF Core はデータベースに適用された移行を追跡するために、__EFMigrationsHistory
という名前のテーブルにこれらを記録します。 さまざまな理由から、ニーズに合わせてこのテーブルをカスタマイズしたい場合もあります。
重要
移行を適用した "後で" 移行履歴テーブルをカスタマイズする場合、データベース内の既存のテーブルを更新するのはお客様の責任です。
スキーマとテーブルの名前
スキーマとテーブルの名前は、OnConfiguring()
の MigrationsHistoryTable()
メソッド (または ASP.NET Core の ConfigureServices()
) を使用して変更できます。 次に示すのは、SQL Server EF Core プロバイダーを使用する例です。
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlServer(
_connectionString,
x => x.MigrationsHistoryTable("__MyMigrationsHistory", "mySchema"));
その他の変更
テーブルの別の側面を構成するには、プロバイダー固有の IHistoryRepository
サービスをオーバーライドして置き換えます。 次に示すのは、MigrationId 列名を SQL Server の Id に変更する例です。
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options
.UseSqlServer(_connectionString)
.ReplaceService<IHistoryRepository, MyHistoryRepository>();
警告
SqlServerHistoryRepository
は内部の名前空間内にあるので、今後のリリースで変更される可能性があります。
internal class MyHistoryRepository : SqlServerHistoryRepository
{
public MyHistoryRepository(HistoryRepositoryDependencies dependencies)
: base(dependencies)
{
}
protected override void ConfigureTable(EntityTypeBuilder<HistoryRow> history)
{
base.ConfigureTable(history);
history.Property(h => h.MigrationId).HasColumnName("Id");
}
}
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET