Compartir a través de


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 de historial de migraciones después de aplicar las migraciones, usted 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 MigrationsHistoryTable() método en OnConfiguring() (o ConfigureServices() en ASP.NET Core). Este es un ejemplo mediante el proveedor de SQL Server EF Core.

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