预先道歉,因为这不是一个问题,而是一个解决方案 - 但是需要大量的搜索才能找到答案并且谷歌没有多大帮助,所以我想通过提供回馈社区的东西错误和帮助未来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)时,它实际上出现在上一行中。
答案 0 :(得分:10)
问题是刷新模式试图将当前值与所有字段的数据库版本进行比较,而SQL不支持那种比较文本,ntext和image列(至少不支持SQL Server 2000)
解决方案是将以下属性添加到列定义
UpdateCheck = UpdateCheck.Never
e.g。
[Column(DbType = "NText", CanBeNull = true, UpdateCheck = UpdateCheck.Never)]
然后刷新模式工作正常,SubmitChanges没有任何进一步的问题。