Aracılığıyla paylaş


Özel Geçiş Geçmişi Tablosu

VARSAYıLAN olarak EF Core, veritabanına hangi geçişlerin uygulandığını adlı __EFMigrationsHistorybir tabloya kaydederek izler. Çeşitli nedenlerle, bu tabloyu gereksinimlerinize daha uygun olacak şekilde özelleştirmek isteyebilirsiniz.

Önemli

Geçişleri uyguladıktan sonra Geçişler geçmişi tablosunu özelleştirirseniz, veritabanındaki mevcut tabloyu güncelleştirmek sizin sorumluluğunuzdadır.

Şema ve tablo adı

'de (veya ConfigureServices() ASP.NET Core'da OnConfiguring() ) yöntemini kullanarak şemayı MigrationsHistoryTable() ve tablo adını değiştirebilirsiniz. SQL Server EF Core sağlayıcısını kullanan bir örnek aşağıda verilmiştir.

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

Diğer değişiklikler

Tablonun ek yönlerini yapılandırmak için sağlayıcıya özgü IHistoryRepository hizmeti geçersiz kılın ve değiştirin. Burada, SQL Server'da MigrationId sütun adını Kimlik olarak değiştirme örneği verilmiştir.

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

Uyarı

SqlServerHistoryRepository bir iç ad alanı içindedir ve gelecek sürümlerde değişebilir.

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