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 資料行的第一級支援。 若要設定它們,只要將資料行的類型設定為 charvarchar ,請指定 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 檔