Tabella cronologia migrazioni personalizzate

Per impostazione predefinita, EF Core tiene traccia delle migrazioni applicate al database registrandole in una tabella denominata __EFMigrationsHistory. Per vari motivi, è possibile personalizzare questa tabella in base alle proprie esigenze.

Importante

Se si personalizza la tabella della cronologia delle migrazioni dopo l'applicazione delle migrazioni, si è responsabili dell'aggiornamento della tabella esistente nel database.

Schema e nome tabella

È possibile modificare lo schema e il nome della tabella usando il MigrationsHistoryTable() metodo in OnConfiguring() (o ConfigureServices() in ASP.NET Core). Di seguito è riportato un esempio che usa il provider EF Core di SQL Server.

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

Altre modifiche

Per configurare aspetti aggiuntivi della tabella, eseguire l'override e sostituire il servizio specifico IHistoryRepository del provider. Di seguito è riportato un esempio di modifica del nome della colonna MigrationId in ID in SQL Server.

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

Avviso

SqlServerHistoryRepository si trova all'interno di uno spazio dei nomi interno e può cambiare nelle versioni future.

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