Model.Documents.Document documentModel = fuseDB.Documents.Single(d => d.BaseID == doc.BaseID);
documentModel.Title = doc.Title;
documentModel.Content = doc.Content;
documentModel.IsAttachment = files.Count;
documentModel.IsAlert = doc.IsAlert;
fuseDB.SubmitChanges();
以上是我的代码 其中Content是Text类型
以下是所报的错误 真搞不懂了 这有什么问题 就一个简单的修改啊 是不是LINQ不能对Text类型的字段进行修改 求解
SQL Server 未处理 NText、Text、Xml 或 Image 数据类型的比较
LINQ problems with NText, Text and Image on SQL server中提到了解决方法:
[Column(DbType = "Text", CanBeNull = true, UpdateCheck = UpdateCheck.Never)]
不建议用Text类型,改为nvarchar类型试试
废话 要能用nvarchar还用在这里问啊
@①尘不染: 可以用nvarchar(max)
你看看linqtosql生成的sql语句就知道了提示是什么意思了!
怎么看生成的sql语句啊
lz描述的问题不存在。linq to sql 对上述字段text,ntext不会有任何问题。
问题是由别的地方导致的。由于lz没详细描述问题,无法帮助。
可以做一个简单实验,直接更新这种类型的字段。只有一个表而已。
我就帮楼主解决另外两个问题吧:
1——
关于不使用TEXT之类的问题,如果你使用的SQL是2005或以上版本,可以使用另外的类型替代:varchar(max),当然,对应的有nvarchar(max),binary(max)等,对他们的操作就象对普通字段操作一样。
(嘿嘿,还记得如果使用SELECT的时候,是不能对TEXT类型进行条件检索的吧?此时,可以先将TEXT通过cast强制转换为varchar再操作,不过,如果用varchar(max),那么这些问题都不存在了)
2——
关于把LINQ语句转换为SQL语句的操作:DataContext对象有一个GetCommand方法,只要把IQuerable对象传递进去就好,不过,这样得到的是一个SelectCommand,UpdataCommand你可以通过CommandBuilder来获取。
3——
至于你说的问题,LUCIKA.ZH有说明,这个问题是不存在的,如果真的存在,那么建议你检查关联的地方是否有问题。
我曾经在使用LINQ进行一个关联数据处理的时候总报错,最后确认的一个原因是LINQ的版本问题。(当时的情况是本机桌面应用调试OK,但到了WebService中就有问题,始终不得其解,后来才发现,虽然模块DLL是3.5的,但我的桌面调试模块却是4.0的,后来我把WebService也升级到4.0,问题解决,呵呵。虽然还是不明白具体原因,至少忽悠过去了)