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.