Tabla de historial de migraciones personalizadas

De forma predeterminada, EF Core realiza un seguimiento de las migraciones que se han aplicado a la base de datos mediante su grabación en una tabla denominada __EFMigrationsHistory. Por varias razones, es posible que quiera personalizar esta tabla para adaptarla mejor a sus necesidades.

Importante

Si personaliza la tabla Historial de migraciones después de aplicar las migraciones, es responsable de actualizar la tabla existente en la base de datos.

Esquema y nombre de tabla

Puede cambiar el esquema y el nombre de la tabla mediante el método MigrationsHistoryTable() en OnConfiguring() (o ConfigureServices() en ASP.NET Core). Este es un ejemplo que usa el proveedor de EF Core de SQL Server.

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

Otros cambios

Para configurar aspectos adicionales de la tabla, invalide y reemplace el servicio específico IHistoryRepository del proveedor. Este es un ejemplo de cómo cambiar el nombre de la columna MigrationId a Id en SQL Server.

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

Advertencia

SqlServerHistoryRepository está dentro de un espacio de nombres interno y puede cambiar en futuras versiones.

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