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 registrandolas en una tabla denominada __EFMigrationsHistory . Por diversos motivos, puede que desee personalizar esta tabla para que se adapte mejor a sus necesidades.

Importante

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

Nombre de esquema y tabla

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

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 del IHistoryRepository proveedor. Este es un ejemplo de cómo cambiar el nombre de 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");
    }
}