Обновите столбец в таблице, содержащей данные XML, используя LINQ-to-SQL - PullRequest
0 голосов
/ 28 февраля 2019

Я использую LINQ-to-SQL для создания и ведения таблицы в SQL, которая содержит XML-сообщения, отправленные в другое приложение, и соответствующий ответ.Каждая строка в таблице содержит подробности сообщения запроса или ответного сообщения и идентификатор связанного сообщения (идентификатор сообщения запроса в случае ответного сообщения и наоборот).

Это все работает хорошо, пока я не попытаюсь обновить столбец, содержащий идентификатор связанного ответного сообщения в строке сообщения запроса.Для этого я использую код вида:

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 голосов
/ 28 февраля 2019

Нашел ответ через 5 минут после публикации вопроса!Хитрость заключается в том, чтобы установить UpdateCheck на Never для связанного свойства

[Column(DbType = "Xml NOT NULL", CanBeNull = false, UpdateCheck = UpdateCheck.Never)]
public XElement MessageText { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...