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

Ale*_*ite 9 exception ntext submitchanges linq-to-sql

事先道歉,因为这不是一个问题,而是一个解决方案 - 但是需要大量的搜索才能找到答案并且谷歌没有多大帮助,所以我想通过提供错误来回馈社区.帮助未来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"
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*ite 10

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

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

UpdateCheck = UpdateCheck.Never
Run Code Online (Sandbox Code Playgroud)

例如

[Column(DbType = "NText", CanBeNull = true, UpdateCheck = UpdateCheck.Never)]
Run Code Online (Sandbox Code Playgroud)

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