Table d’historique des Migrations personnaliséCustom Migrations History Table

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.By default, EF Core keeps track of which migrations have been applied to the database by recording them in a table named __EFMigrationsHistory. Pour diverses raisons, vous souhaiterez sans doute personnaliser ce tableau pour mieux répondre à vos besoins.For various reasons, you may want to customize this table to better suit your needs.

Important

Si vous personnalisez la table d’historique de Migrations après appliquer des migrations, vous êtes responsable de la mise à jour de la table existante dans la base de données.If you customize the Migrations history table after applying migrations, you are responsible for updating the existing table in the database.

Nom de schéma et de tableSchema and table name

Vous pouvez modifier le schéma et le nom de la table à l’aide du MigrationsHistoryTable() méthode dans OnConfiguring() (ou ConfigureServices() sur ASP.NET Core).You can change the schema and table name using the MigrationsHistoryTable() method in OnConfiguring() (or ConfigureServices() on ASP.NET Core). Voici un exemple utilisant le fournisseur SQL Server EF Core.Here is an example using the SQL Server EF Core provider.

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

Autres modificationsOther changes

Pour configurer des aspects supplémentaires de la table, remplacer et remplacez spécifique au fournisseur IHistoryRepository service.To configure additional aspects of the table, override and replace the provider-specific IHistoryRepository service. Voici un exemple de modification de nom de colonne MigrationId Id sur SQL Server.Here is an example of changing the MigrationId column name to Id on SQL Server.

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

Avertissement

SqlServerHistoryRepository se trouve dans un espace de noms interne et peut changer dans les futures versions.SqlServerHistoryRepository is inside an internal namespace and may change in future releases.

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