Вопрос

У меня есть типизированный набор данных, и когда я вызываю TableAdapter.Update (DataRow) , выполняемый SQL включает обновление столбца первичного ключа базы данных.

К сожалению, когда этот код выполняется в реплицированной базе данных, в столбце PK установлено свойство rowguid , и я получаю следующую ошибку:

  

System.Data.SqlClient.SqlException: обновление столбцов со свойством rowguidcol недопустимо.   Транзакция завершилась в триггере. Пакет был прерван.     в System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors (RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo [] batchCommands, Int32 commandCount)     в System.Data.Common.DbDataA ...

Как запретить адаптеру таблиц обновлять этот столбец (значение совпадает)?

Это было полезно?

Решение

Вы можете вручную отредактировать SQL, созданный для команды обновления, в конструкторе DataSet Просто щелкните адаптер и найдите UpdateCommand . Есть ли причина, по которой вы обновляете первичный ключ? Если нет (и не должно быть, если это вообще возможно), то вы должны удалить это из команды.

Другие советы

Если ваш столбец на самом деле помечен как первичный ключ в наборе данных, автоматически сгенерированный обновленный оператор не должен пытаться его обновить. Я бы посмотрел на дизайнера и дважды проверил, что это на самом деле первичный ключ.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top