Udostępnij za pośrednictwem


Funkcje kolumn specyficzne dla dostawcy programu Entity Framework Core SQL Server

Ta strona zawiera szczegółowe informacje o opcjach konfiguracji kolumn specyficznych dla dostawcy programu SQL Server.

Unicode i UTF-8

Program SQL Server 2019 wprowadził obsługę protokołu UTF-8 , która umożliwia przechowywanie danych UTF-8 w char kolumnach i varchar przez skonfigurowanie ich przy użyciu specjalnych sortowania UTF-8. Program EF Core 7.0 wprowadził pełną obsługę mapowania na kolumny UTF-8 i można ich używać również w poprzednich wersjach ef, z dodatkowymi krokami.

Program EF Core 7.0 zawiera najwyższej klasy obsługę kolumn UTF-8. Aby je skonfigurować, wystarczy skonfigurować typ kolumny na char lub varchar, określ sortowanie UTF-8 (kończące się na _UTF8), a następnie określ, że kolumna powinna mieć wartość Unicode:

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

Kolumny rozrzedłe

Kolumny rozrzedzonych to zwykłe kolumny, które mają zoptymalizowany magazyn dla wartości null, zmniejszając wymagania dotyczące miejsca dla wartości null kosztem większego obciążenia związanego z pobieraniem wartości innych niż null.

Rozważmy na przykład hierarchię typów mapowana za pomocą strategii TPH (table-per-hierarchy). W przypadku funkcji TPH jedna tabela bazy danych jest używana do przechowywania wszystkich typów w hierarchii; Oznacza to, że tabela musi zawierać kolumny dla każdej właściwości w całej hierarchii, a w przypadku kolumn należących do rzadkich typów większość wierszy będzie zawierać wartość null dla tej kolumny. W takich przypadkach warto skonfigurować kolumnę jako rozrzedliwą, aby zmniejszyć wymagania dotyczące miejsca. Decyzja o tym, czy należy podjąć rozrzedy kolumnę, musi zostać podjęta przez użytkownika i zależy od oczekiwań dotyczących rzeczywistych danych w tabeli.

Kolumnę można utworzyć rozrzedli za pośrednictwem interfejsu API Fluent:

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

Aby uzyskać więcej informacji na temat rozrzednych kolumn, zobacz dokumentację programu SQL Server.