2011-08-04 73 views
4

我在SQL varchar(max)中有一列。使用LINQ,當我試圖添加一個字符串超過64k的記錄時,該值不會保存到數據庫中。我只是在做;LINQ大字符串(64k)未插入SQL數據庫

test.MyString = LargeString; //(over 64k text) 
mydb.myTable.InsertOnSubmit(test); 
mydb.SubmitChanges(); 

使用LINQ to SQL有沒有限制?什麼是正確的方法來做到這一點?

+1

你是否得到一些異常?或者只是列變空了?如果分配像「測試字符串」這樣的較小字符串會發生什麼? –

+1

該領域的規模剛剛增加到MAX?如果是這樣,您可能需要重新編譯DBML – hspain

+0

我沒有收到任何異常,並且列變爲空(不是NULL)小字符串沒有問題。我還從我的DBML中刪除了表格並閱讀了表格。同樣的問題。 –

回答

7

VarChar(Max)支持最多8000個字符的字符串(SQL Server 2k)。在2005+這應該不會導致錯誤。

您可能需要使用Text字段; for SQL Server 2005+, VarChar(Max) is preferred

重要

的ntext,文本和圖像數據類型將在MicrosoftSQL服務器的 未來的版本中刪除。避免在 新開發工作中使用這些數據類型,並計劃修改當前 使用它們的應用程序。改爲使用nvarchar(max),varchar(max)和varbinary(max)。 用於存儲大型非Unicode字符和二進制數據的固定長度和可變長度數據類型。 Unicode數據使用UNICODE UCS-2 字符集。

見本作在VARCHAR &文本數據類型的詳細信息

  1. SQL Server Text type vs. varchar data type
  2. MSDN: ntext, text, and image

我注意到你在mydb呼籲InsertOnSubmit和調用 - 這是錯誤的原因還是錯誤。

+0

是的,這是一個錯字。應該是mydb.SubmitChanges –