Entity Framework Core SQL Server 提供者專屬的資料行功能
此頁面詳細說明 SQL Server 提供者特定的資料行組態選項。
Unicode 和 UTF-8
SQL Server 2019 引進了 UTF-8 支援,可藉由使用特殊的 UTF-8 定序來設定 UTF-8 資料,以在 和資料 varchar
行中 char
儲存 UTF-8 資料。 EF Core 7.0 引進了對應至 UTF-8 資料行的完整支援,而且可以在舊版 EF 中使用它們,並執行一些額外的步驟。
EF Core 7.0 包含 UTF-8 資料行的第一級支援。 若要設定它們,只要將資料行的類型設定為 char
或 varchar
,請指定 UTF-8 定序(結尾 _UTF8
為 ),並指定資料行應該是 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();
}
疏鬆資料行
疏鬆資料行是具有 Null 值的優化儲存體的一般資料行,可降低 Null 值的空間需求,代價是擷取非 Null 值的額外負荷。
例如,請考慮透過 每個階層資料表 (TPH) 策略 對應的類型階層。 在 TPH 中,單一資料庫資料表用來保存階層中的所有類型;這表示資料表必須包含整個階層中每個屬性的資料行,而且對於屬於罕見類型的資料行,大部分的資料列都會包含該資料行的 Null 值。 在這些情況下,將資料行設定為 疏鬆 可能很合理,以減少空間需求。 使用者是否必須做出資料行疏鬆的決定,並取決於資料表中實際資料的預期。
資料行可以透過 Fluent API 進行疏鬆:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<RareBlog>()
.Property(b => b.RareProperty)
.IsSparse();
}
如需疏鬆資料行的詳細資訊, 請參閱 SQL Server 檔 。