LINQ大字符串(64k)未插入SQL数据库

时间:2011-08-04 15:19:23

标签: c# linq-to-sql varcharmax

我在SQL varchar(max)中有一个列。使用LINQ时,当我尝试添加超过64k的字符串的记录时,该值不会保存到DB中。我只是在做;

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

使用LINQ to SQL时是否有限制?这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:7)

VarChar(Max)支持最多8000个字符的字符串(SQL Server 2k)。在2005年以上,这不应该导致错误。

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

  

重要

     

ntext,text和image数据类型将被删除   未来版本的MicrosoftSQL Server。避免使用这些数据类型   新的开发工作,并计划修改当前的应用程序   使用它们。请改用nvarchar(max),varchar(max)和varbinary(max)。   固定和可变长度数据类型,用于存储大型非Unicode和   Unicode字符和二进制数据。 Unicode数据使用UNICODE UCS-2   字符集。

有关VarChar&amp ;;的详细信息,请参阅此处。文本数据类型

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

  3. 我注意到您在InsertOnSubmit上呼叫mydb并在SubmitChanges上呼叫ISNetDB - 这是错误或导致错误。