SQL Server上的NText,Text和Image的LINQ问题

时间:2009-09-22 13:54:04

标签: linq-to-sql exception submitchanges ntext

预先道歉,因为这不是一个问题,而是一个解决方案 - 但是需要大量的搜索才能找到答案并且谷歌没有多大帮助,所以我想通过提供回馈社区的东西错误和帮助未来googlers的解决方案。

使用LINQ to SQL时,我在向数据表提交更改(第二次)时遇到了问题。我第一次提交更改都没关系,第二次提交更改我收到了一个SQL异常,其中说:

"The text, ntext, and image data types cannot be compared or sorted, 
 except when using IS NULL or LIKE operator"

当我调用SubmitChanges()时抛出了异常,但由于LINQ的延迟加载,当我调用Refresh(RefreshMode.KeepCurrentValues,myObject)时,它实际上出现在上一行中。

1 个答案:

答案 0 :(得分:10)

问题是刷新模式试图将当前值与所有字段的数据库版本进行比较,而SQL不支持那种比较文本,ntext和image列(至少不支持SQL Server 2000)

解决方案是将以下属性添加到列定义

UpdateCheck = UpdateCheck.Never

e.g。

[Column(DbType = "NText", CanBeNull = true, UpdateCheck = UpdateCheck.Never)]

然后刷新模式工作正常,SubmitChanges没有任何进一步的问题。