Aracılığıyla paylaş


Entity Framework Core SQL Server sağlayıcısına özgü sütun özellikleri

Bu sayfada SQL Server sağlayıcısına özgü sütun yapılandırma seçenekleri ayrıntılı olarak açıklanıyor.

Unicode ve UTF-8

SQL Server 2019, UTF-8 verilerini özel UTF-8 harmanlamalarıyla yapılandırarak ve varchar sütunlarda char depolamaya olanak tanıyan UTF-8 desteği kullanıma sunulmuştur. EF Core 7.0, UTF-8 sütunlarına eşleme için tam destek sunar ve bunları bazı ek adımlarla birlikte önceki EF sürümlerinde de kullanabilirsiniz.

EF Core 7.0, UTF-8 sütunları için birinci sınıf destek içerir. Bunları yapılandırmak için, sütunun türünü char veya varcharolarak yapılandırın, bir UTF-8 harmanlaması (ile _UTF8biten) belirtin ve sütunun Unicode olması gerektiğini belirtin:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>()
        .Property(b => b.Name)
        .HasColumnType("varchar(max)")
        .UseCollation("LATIN1_GENERAL_100_CI_AS_SC_UTF8")
        .IsUnicode();
}

Seyrek sütunlar

Seyrek sütunlar, null değerler için iyileştirilmiş bir depolama alanı olan sıradan sütunlardır ve null olmayan değerleri almak için daha fazla ek yük karşılığında null değerler için alan gereksinimlerini azaltır.

Örnek olarak, hiyerarşi başına tablo (TPH) stratejisiyle eşlenmiş bir tür hiyerarşisi düşünün. TPH'de, hiyerarşideki tüm türleri tutmak için tek bir veritabanı tablosu kullanılır; Bu, tablonun hiyerarşinin tamamında her bir özellik için sütunlar içermesi gerektiği ve nadir türlere ait sütunlar için çoğu satırın bu sütun için null değer içermesi gerektiği anlamına gelir. Bu gibi durumlarda, alan gereksinimlerini azaltmak için sütunu seyrek olarak yapılandırmak mantıklı olabilir. Bir sütunun seyrek yapılıp yapılmayacağı kararı kullanıcı tarafından verilmelidir ve tablodaki gerçek verilerin beklentilerine bağlıdır.

Fluent API aracılığıyla bir sütun seyrek hale getirilebilir:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<RareBlog>()
        .Property(b => b.RareProperty)
        .IsSparse();
}

Seyrek sütunlar hakkında daha fazla bilgi için bkz. SQL Server belgeleri.