使用LINQ-to-SQL更新包含XML数据的表中的列

时间:2019-02-28 11:10:58

标签: xml linq-to-sql

我正在使用LINQ-to-SQL在SQL中创建和维护一个表,该表包含发送到另一个应用程序的XML消息及其相应的响应。表中的每一行都包含请求消息或响应消息的详细信息以及关联消息的ID(在响应消息的情况下为请求消息的ID,反之亦然)。

在我尝试更新请求消息行中包含相关响应消息的ID的列之前,这一切都很好。为此,我使用以下形式的代码:

using (var MessageStore = new MessageStore(CONNECTION_STRING))
{
     // Get the Request message with the specified ID
     var Request = MessageStore.XMLMessages.SingleOrDefault(X => X.Id == RequestId);                  

     // Update the row with the ID of the associated response message
     if (Request != null)
     {
          Request.LinkedMessageId = ResponseId;
          MessageStore.SubmitChanges();
     }
}

但是,SubmitChanges调用会引发异常:

SQL Server does not handle comparison of NText, Text, Xml, or Image data types.

看起来,SQL正在将更新后的消息中的XML数据与原始数据进行比较,但我不需要。有没有什么方法可以更新行中的其他列而不用SQL来比较XML数据呢?我尝试使用匿名类型,但它们是只读的,因此我无法更新值然后存储它。

任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

发布问题大约5分钟后找到答案!诀窍是在关联属性上将UpdateCheck设置为“从不”

[Column(DbType = "Xml NOT NULL", CanBeNull = false, UpdateCheck = UpdateCheck.Never)]
public XElement MessageText { get; set; }