天天看點

System.Data.SqlClient.SqlException: 資料類型 text 和 varchar 在 equal to 運算符中不相容。

環境:vs2015,sqlserver2008

相關程式包:ef6

定義了一個實體article

EntityTypeConfiguration的配置

這樣可以正常生成表字段,而且類型也正确

插入資料的時候,就引起了以下異常

System.Data.SqlClient.SqlException: 資料類型 text 和 varchar 在 equal to 運算符中不相容。

剛開始,以為是沒有指定導緻轉換錯誤

再次插入資料,還是導緻一樣的錯誤

經過多次試驗,

最後結果就是 不指定類型為text,系統自動指定類型為 nvarchar(MAX)

按SQL2005來說,varchar如果有定義字元數,那麼最大就是8000,超過會産生二進制截斷。

而varchar(max)、nvarchar(max) 和 varbinary(max) 統稱為大值資料類型。可以存儲最大為 2^31-1 個位元組的資料。

當存儲字元長度<=8000時,存儲機制跟正常varchar一樣,實際占用空間=字元長度+2(結束辨別)。

當存儲字元長度>8000時,存儲機制跟text一樣。

varchar(max)支援的最大長度是系統支援的最大長度,如在32位SQL Server上其最大長度為2G位元組。

字元長度小于等于8000時,不管varchar還是varchar(max)都是存多少占多少。