Özel geçişler geçmiş tablosuCustom Migrations History Table

Varsayılan olarak EF Core, veritabanını __EFMigrationsHistoryadlı bir tabloya kaydederek hangi geçişlerin uygulanmış olduğunu izler.By default, EF Core keeps track of which migrations have been applied to the database by recording them in a table named __EFMigrationsHistory. Çeşitli nedenlerle bu tabloyu gereksinimlerinize daha uygun olacak şekilde özelleştirmek isteyebilirsiniz.For various reasons, you may want to customize this table to better suit your needs.

Önemli

Geçişleri uyguladıktan sonra geçişleri geçmiş tablosunu özelleştirirseniz, veritabanında var olan tabloyu güncelleştirmekten siz sorumlusunuz.If you customize the Migrations history table after applying migrations, you are responsible for updating the existing table in the database.

Şema ve tablo adıSchema and table name

Şema ve tablo adını, OnConfiguring() (veya ASP.NET Core üzerinde ConfigureServices()) MigrationsHistoryTable() yöntemini kullanarak değiştirebilirsiniz.You can change the schema and table name using the MigrationsHistoryTable() method in OnConfiguring() (or ConfigureServices() on ASP.NET Core). SQL Server EF Core sağlayıcısını kullanan bir örnek aşağıda verilmiştir.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"));

Diğer değişikliklerOther changes

Tablonun ek yönlerini yapılandırmak için sağlayıcıya özgü IHistoryRepository hizmetini geçersiz kılın ve değiştirin.To configure additional aspects of the table, override and replace the provider-specific IHistoryRepository service. SQL Server MigrationID sütununun adını kimlik olarak değiştirme örneği aşağıda verilmiştir.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>();

Uyarı

SqlServerHistoryRepository iç ad alanı içindedir ve gelecek sürümlerde değiştirilebilir.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");
    }
}