Udostępnij za pośrednictwem


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