首页 新闻 搜索 专区 学院

LINQ修改Text类型字段报错

0
悬赏园豆:10 [已解决问题] 解决于 2012-04-12 13:33

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 数据类型的比较

 

①尘不染的主页 ①尘不染 | 初学一级 | 园豆:11
提问于:2012-04-11 19:19
< >
分享
最佳答案
0

LINQ problems with NText, Text and Image on SQL server中提到了解决方法:

[Column(DbType = "Text", CanBeNull = true, UpdateCheck = UpdateCheck.Never)]
收获园豆:10
dudu | 高人七级 |园豆:39034 | 2012-04-12 13:32
其他回答(4)
0

不建议用Text类型,改为nvarchar类型试试

artwl | 园豆:16526 (专家六级) | 2012-04-11 21:37

废话    要能用nvarchar还用在这里问啊

支持(0) 反对(0) ①尘不染 | 园豆:11 (初学一级) | 2012-04-11 23:04

@①尘不染: 可以用nvarchar(max)

支持(0) 反对(0) dudu | 园豆:39034 (高人七级) | 2012-04-12 13:29
0

你看看linqtosql生成的sql语句就知道了提示是什么意思了!

小小刀 | 园豆:1991 (小虾三级) | 2012-04-11 22:43

怎么看生成的sql语句啊

支持(0) 反对(0) ①尘不染 | 园豆:11 (初学一级) | 2012-04-11 23:05
0

lz描述的问题不存在。linq to sql 对上述字段text,ntext不会有任何问题。

问题是由别的地方导致的。由于lz没详细描述问题,无法帮助。

可以做一个简单实验,直接更新这种类型的字段。只有一个表而已。

lucika.zh | 园豆:59 (初学一级) | 2012-04-12 09:59
0

我就帮楼主解决另外两个问题吧:

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,问题解决,呵呵。虽然还是不明白具体原因,至少忽悠过去了)

无之无 | 园豆:5085 (大侠五级) | 2012-04-12 10:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册