Özel Geçiş Geçmişi Tablosu
VARSAYıLAN olarak EF Core, veritabanına hangi geçişlerin uygulandığını adlı __EFMigrationsHistory
bir 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");
}
}