Tabela historii migracje niestandardoweCustom Migrations History Table

Domyślnie śledzi informacje o programu EF Core migracji, które zostały zastosowane do bazy danych, rejestrując je w tabeli o nazwie __EFMigrationsHistory.By default, EF Core keeps track of which migrations have been applied to the database by recording them in a table named __EFMigrationsHistory. Z różnych powodów można dostosować do własnych potrzeb.For various reasons, you may want to customize this table to better suit your needs.

Ważne

W przypadku dostosowania tabeli historii migracje po z zastosowaniem migracje, jesteś odpowiedzialny za aktualizowanie istniejącej tabeli w bazie danych.If you customize the Migrations history table after applying migrations, you are responsible for updating the existing table in the database.

Nazwa schematu i tabeliSchema and table name

Można zmienić schematu i tabeli przy użyciu nazwy MigrationsHistoryTable() method in Class metoda OnConfiguring() (lub ConfigureServices() programu ASP.NET Core).You can change the schema and table name using the MigrationsHistoryTable() method in OnConfiguring() (or ConfigureServices() on ASP.NET Core). Oto przykład przy użyciu dostawcy programu SQL Server programu EF Core.Here is an example using the SQL Server EF Core provider.

protected override void OnConfiguring(DbContextOptionsBuilder options)
    => options.UseSqlServer(
        connectionString,
        x => x.MigrationsHistoryTable("__MyMigrationsHistory", "mySchema"));

Inne zmianyOther changes

Aby skonfigurować dodatkowe aspekty tabeli, należy zastąpić i Zastąp właściwe dla dostawcy IHistoryRepository usługi.To configure additional aspects of the table, override and replace the provider-specific IHistoryRepository service. Oto przykład zmiany MigrationId nazwa kolumny, która ma identyfikator w programie SQL Server.Here is an example of changing the MigrationId column name to Id on SQL Server.

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

Ostrzeżenie

SqlServerHistoryRepository znajduje się wewnątrz wewnętrznego obszaru nazw i mogą ulec zmianie w przyszłych wersjach.SqlServerHistoryRepository is inside an internal namespace and may change in future releases.

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