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