Freigeben über


Tabelle "Benutzerdefinierter Migrationsverlauf"

Standardmäßig verfolgt EF Core, welche Migrationen auf die Datenbank angewendet wurden, indem sie in einer Tabelle mit dem Namen __EFMigrationsHistoryaufgezeichnet werden. Aus verschiedenen Gründen können Sie diese Tabelle an Ihre Anforderungen anpassen.

Von Bedeutung

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

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

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