2011-08-04 30 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 –