Partager via


Table d’historique des migrations personnalisée

Par défaut, EF Core effectue le suivi des migrations qui ont été appliquées à la base de données en les enregistrant dans une table nommée __EFMigrationsHistory. Pour diverses raisons, vous souhaitez peut-être personnaliser cette table pour mieux répondre à vos besoins.

Important

Si vous personnalisez la table d’historique des migrations après avoir appliqué des migrations, vous êtes responsable de la mise à jour de la table existante dans la base de données.

Schéma et nom de la table

Vous pouvez modifier le schéma et le nom de la table à l’aide de la méthode MigrationsHistoryTable() dans OnConfiguring() (ou ConfigureServices() sur ASP.NET Core). Voici un exemple utilisant le fournisseur EF Core Microsoft SQL Server.

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

Autres modifications

Pour configurer d’autres aspects de la table, écrasez et remplacez le service IHistoryRepository propre au fournisseur. Voici un exemple de modification du nom de colonne MigrationId en Id sur Microsoft SQL Server.

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

Avertissement

SqlServerHistoryRepository se trouve à l’intérieur d’un espace de noms interne et peut changer dans les versions ultérieures.

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