Tabela historii migracji niestandardowych
Domyślnie program EF Core śledzi, które migracje zostały zastosowane do bazy danych, rejestrując je w tabeli o nazwie __EFMigrationsHistory
. Z różnych powodów możesz dostosować tę tabelę tak, aby lepiej odpowiadała Twoim potrzebom.
Ważne
Jeśli dostosujesz tabelę Historia migracji po zastosowaniu migracji, odpowiadasz za aktualizowanie istniejącej tabeli w bazie danych.
Nazwa schematu i tabeli
Możesz zmienić nazwę schematu i tabeli przy użyciu MigrationsHistoryTable()
metody w OnConfiguring()
programie (lub ConfigureServices()
w ASP.NET Core). Oto przykład użycia dostawcy programu EF Core programu SQL Server.
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlServer(
_connectionString,
x => x.MigrationsHistoryTable("__MyMigrationsHistory", "mySchema"));
Inne zmiany
Aby skonfigurować dodatkowe aspekty tabeli, przesłoń i zastąp usługę specyficzną dla IHistoryRepository
dostawcy. Oto przykład zmiany nazwy kolumny MigrationId na Identyfikator w programie SQL Server.
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options
.UseSqlServer(_connectionString)
.ReplaceService<IHistoryRepository, MyHistoryRepository>();
Ostrzeżenie
SqlServerHistoryRepository
znajduje się wewnątrz wewnętrznej przestrzeni nazw i może ulec zmianie w przyszłych wersjach.
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");
}
}