Sdílet prostřednictvím


Tabulka historie vlastních migrací

EF Core ve výchozím nastavení sleduje, které migrace se na databázi použily, tím, že je zaznamená do tabulky s názvem __EFMigrationsHistory. Z různých důvodů můžete chtít tuto tabulku přizpůsobit tak, aby lépe vyhovovala vašim potřebám.

Důležité

Pokud po použití migrací přizpůsobíte tabulku historie migrací, zodpovídáte za aktualizaci stávající tabulky v databázi.

Název schématu a tabulky

Název schématu a tabulky můžete změnit pomocí MigrationsHistoryTable() metody v OnConfiguring() (nebo ConfigureServices() v ASP.NET Core). Tady je příklad použití poskytovatele SQL Serveru EF Core.

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

Další změny

Pokud chcete nakonfigurovat další aspekty tabulky, přepište a nahraďte službu specifickou pro IHistoryRepository zprostředkovatele. Tady je příklad změny názvu sloupce MigrationId na ID na SQL Serveru.

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

Upozorňující

SqlServerHistoryRepository je uvnitř interního oboru názvů a může se změnit v budoucích verzích.

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