Запретить типизированный DataSet, обновляющий столбец PK - PullRequest
0 голосов
/ 09 сентября 2009

У меня есть типизированный набор данных, и когда я вызываю 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 ...

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

Ответы [ 2 ]

2 голосов
/ 09 сентября 2009

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

0 голосов
/ 09 сентября 2009

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

...