Funkce sloupců specifické pro zprostředkovatele SQL Serveru Entity Framework Core
Tato stránka podrobně popisuje možnosti konfigurace sloupce, které jsou specifické pro poskytovatele SQL Serveru.
Unicode a UTF-8
SQL Server 2019 zavedl podporu UTF-8 , která umožňuje ukládání dat UTF-8 do char
sloupců a varchar
jejich konfigurací pomocí speciálních kolací UTF-8. EF Core 7.0 zavedla úplnou podporu pro mapování na sloupce UTF-8 a je možné je použít i v předchozích verzích EF s některými dalšími kroky.
EF Core 7.0 obsahuje prvotřídní podporu sloupců UTF-8. Pokud je chcete nakonfigurovat, jednoduše nakonfigurujte typ sloupce na char
nebo varchar
zadejte kolaci UTF-8 (končící _UTF8
na) a určete, že sloupec by měl být 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();
}
Řídké sloupce
Řídké sloupce jsou běžné sloupce, které mají optimalizované úložiště pro hodnoty null, což snižuje požadavky na místo pro hodnoty null za cenu větší režie na načtení nenulových hodnot.
Představte si například hierarchii typu mapovanou prostřednictvím strategie TPH (table-per-hierarchy). V TPH se jednoúčelová tabulka databáze používá k uložení všech typů v hierarchii; to znamená, že tabulka musí obsahovat sloupce pro každou a každou vlastnost v celé hierarchii a pro sloupce patřící do vzácných typů bude většina řádků obsahovat hodnotu null pro tento sloupec. V těchto případech může být vhodné nakonfigurovat sloupec jako zhuštěný, aby se snížily požadavky na místo. Rozhodnutí, jestli má uživatel provést řídký sloupec, a závisí na očekávání skutečných dat v tabulce.
Sloupec může být řídký prostřednictvím rozhraní Fluent API:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<RareBlog>()
.Property(b => b.RareProperty)
.IsSparse();
}
Další informace o řídkých sloupcích najdete v dokumentaci k SQL Serveru.