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