Entity Framework Core SQL Server 提供者特有的資料行功能
文章推薦指數: 80 %
使用其中一個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
本文內容
延伸文章資訊
- 1UTF-8字符「EF BF BD」-备胎_mob604756f87695的技术博客
UTF-8字符「EF BF BD」-备胎,在众多的utf-8码点值中,除了ascii,你还应该记住「EFBFBD」,因为它是很多编程语言以及库中的备胎,即无效的码点值在 ...
- 2UTF8 3byte(ef)
UTF8 3byte(ef) ; ef 80 80,, ; ef 81 80,, ; ef 82 80,, ; ef 83 80,, ; ef 84 80,, ...
- 3位元組順序記號 - 维基百科
位元組順序記號(英語:byte-order mark,BOM)是位於碼點 U+FEFF 的統一碼字符的名称。當以UTF-16 ... 它常被用來當做標示文件是以UTF-8、UTF-16或UTF-...
- 4Unicode/UTF-8-character table - starting from code position ...
code point, character, UTF-8 (hex.) name. U+FF00, , ef bc 80. U+FF01 ! ef bc 81, FULLWIDTH EXCLA...
- 5你应该记住的一个UTF-8字符「EF BF BD」 | 行思錄
所谓编码方案即讲字符集到码点(code point)的映射方式。 在众多的utf-8码点值中,除了ascii,你还应该记住「EF BF BD」,因为它是很多 ...