Поделиться через


Таблица журнала пользовательских миграций

По умолчанию EF Core отслеживает, какие миграции были применены к базе данных, записывая их в таблицу с именем __EFMigrationsHistory. По различным причинам вы можете настроить эту таблицу в соответствии с вашими потребностями.

Важно!

Если вы настраиваете таблицу журнала миграций после применения миграций, вы несете ответственность за обновление существующей таблицы в базе данных.

Имя схемы и таблицы

Можно изменить имя схемы и таблицы с помощью MigrationsHistoryTable() метода OnConfiguring() (или ConfigureServices() в ASP.NET Core). Ниже приведен пример использования поставщика SQL Server EF Core.

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

Другие изменения

Чтобы настроить дополнительные аспекты таблицы, переопределите и замените службу для конкретного IHistoryRepository поставщика. Ниже приведен пример изменения имени столбца MigrationId на id on SQL Server.

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

Предупреждение

SqlServerHistoryRepository находится внутри внутреннего пространства имен и может измениться в будущих выпусках.

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