Entity Framework Core SQL Server 提供者特有的資料行功能

文章推薦指數: 80 %
投票人數:10人

使用其中一個SQL Server的UTF-8 定序來設定屬性的定序;這些定序具有 UTF8 後置詞(請參閱定序) 的檔。

請勿停用屬性上的Unicode;這會導致EF Core 建立資料 ... 跳到主要內容 已不再支援此瀏覽器。

請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。

下載MicrosoftEdge InternetExplorer和MicrosoftEdge的詳細資訊 目錄 結束焦點模式 閱讀英文 儲存 目錄 閱讀英文 儲存 列印 Twitter LinkedIn Facebook 電子郵件 目錄 EntityFrameworkCoreSQLServer提供者特有的資料行功能 發行項 09/22/2022 1位參與者 本文內容 此頁面詳述SQLServer提供者特有的資料行組態選項。

Unicode和UTF-8 SQLServer有兩種用於儲存文字資料的資料行類型:nvarchar(x)和varchar(x);這些資料傳統上分別用來在UTF-16編碼和非Unicode資料中保存Unicode資料。

SQLServer2019引進了將資料行中varchar(x)儲存UTF-8Unicode資料的能力。

不幸的是,這目前不適用於EFCore的SQLServer提供者。

若要將字串屬性對應至資料varchar(x)行,Fluent或資料批註API通常用來停用Unicode(請參閱這些檔)。

雖然這會導致建立正確的資料行類型,但它也會讓EFCore以與UTF-8資料不相容的方式傳送資料庫參數:DbType.AnsiString是用來(表示非Unicode資料),但DbType.String必須正確傳送Unicode資料。

若要在SQLServer中儲存UTF-8資料,請遵循下列步驟: 使用其中一個SQLServer的UTF-8定序來設定屬性的定序;這些定序具有UTF8後置詞(請參閱定序)的檔。

請勿停用屬性上的Unicode;這會導致EFCore建立資料nvarchar(x)行。

編輯移轉,並改為手動設定資料行類型varchar(x)。

疏鬆資料行 注意 EFCore6.0引進疏鬆資料行支援。

疏鬆資料行是具有Null值的優化儲存體的一般資料行,可降低Null值的空間需求,代價是擷取非Null值的額外負荷。

例如,請考慮透過每個階層資料表對應的類型階層,(TPH)策略。

在TPH中,會使用單一資料庫資料表來保存階層中的所有類型;這表示資料表必須包含整個階層中每個屬性的資料行,以及屬於罕見類型的資料行,大部分的資料列都會包含該資料行的Null值。

在這些情況下,將資料行設定為疏鬆可能很合理,以減少空間需求。

決定是否要讓使用者進行資料行疏鬆,並取決於資料表中實際資料的預期。

資料行可以透過FluentAPI進行疏鬆: protectedoverridevoidOnModelCreating(ModelBuildermodelBuilder) { modelBuilder.Entity() .Property(b=>b.RareProperty) .IsSparse(); } 如需疏鬆資料行的詳細資訊,請參閱SQLServer檔。

本文內容



請為這篇文章評分?