9

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

使用 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) 时的前一行中。

4

1 回答 1

10

问题是 Refresh 模式试图将所有字段的当前版本与数据库版本进行比较,而 SQL 不支持这种比较 text、ntext 和 image 列(至少在 SQL Server 2000 上不支持)。

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

UpdateCheck = UpdateCheck.Never

例如

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

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

于 2009-09-22T13:55:09.670 回答