Benutzerdefinierte Migrations Verlaufs TabelleCustom Migrations History Table

Standardmäßig wird von EF Core nachverfolgt, welche Migrationen auf die Datenbank angewendet wurden, indem Sie in einer Tabelle mit dem Namen aufgezeichnet werden __EFMigrationsHistory .By default, EF Core keeps track of which migrations have been applied to the database by recording them in a table named __EFMigrationsHistory. Aus verschiedenen Gründen kann es sinnvoll sein, diese Tabelle anzupassen, damit Sie Ihren Anforderungen besser entspricht.For various reasons, you may want to customize this table to better suit your needs.

Wichtig

Wenn Sie die Migrations Verlaufs Tabelle nach dem Anwenden von Migrationen anpassen, sind Sie dafür verantwortlich, die vorhandene Tabelle in der Datenbank zu aktualisieren.If you customize the Migrations history table after applying migrations, you are responsible for updating the existing table in the database.

Schema-und TabellennameSchema and table name

Sie können das Schema und den Tabellennamen mithilfe der- MigrationsHistoryTable() Methode in OnConfiguring() (oder ConfigureServices() auf ASP.net Core) ändern.You can change the schema and table name using the MigrationsHistoryTable() method in OnConfiguring() (or ConfigureServices() on ASP.NET Core). Im folgenden finden Sie ein Beispiel für die Verwendung des SQL Server EF Core Anbieters.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"));

Weitere ÄnderungenOther changes

Um zusätzliche Aspekte der Tabelle zu konfigurieren, überschreiben Sie den anbieterspezifischen Dienst, und ersetzen Sie ihn IHistoryRepository .To configure additional aspects of the table, override and replace the provider-specific IHistoryRepository service. Im folgenden finden Sie ein Beispiel für das Ändern des Namens der migrationid-Spalte in " ID " in 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>();

Warnung

SqlServerHistoryRepository befindet sich in einem internen Namespace und kann sich in zukünftigen Versionen ändern.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");
    }
}