Benutzerdefinierte Migrationsverlaufstabelle

Standardmäßig hält EF Core fest, welche Migrationen auf die Datenbank angewendet wurden, indem es diese in einer Tabelle namens __EFMigrationsHistory aufzeichnet. Aus verschiedenen Gründen möchten Sie diese Tabelle an Ihre Bedürfnisse anpassen.

Wichtig

Wenn Sie die Migrationsverlaufstabelle nach dem Anwenden von Migrationen anpassen, sind Sie für die Aktualisierung der vorhandenen Tabelle in der Datenbank verantwortlich.

Schma- und Tabellenname

Sie können den Schema- und Tabellennamen mithilfe der MigrationsHistoryTable()-Methode in OnConfiguring() (oder ConfigureServices() auf ASP.NET Core) ändern. Hier ist ein Beispiel für die Verwendung des SQL Server EF Core-Anbieters.

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

Weitere Änderungen

Um zusätzliche Aspekte der Tabelle zu konfigurieren, überschreiben und ersetzen Sie den anbieterspezifischen IHistoryRepository-Dienst. Nachfolgend sehen Sie ein Beispiel zum Ändern des Spaltennamens „MigrationId“ in Id auf 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.

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