Impedisci al DataSet tipizzato di aggiornare la colonna PK
-
05-07-2019 - |
Domanda
Ho un set di dati tipizzato e dove chiamo TableAdapter.Update (DataRow)
, l'SQL eseguito include un aggiornamento della colonna chiave primaria del database.
Sfortunatamente, quando questo codice viene eseguito su un database replicato, nella colonna PK è impostata la proprietà rowguid
e viene visualizzato il seguente errore:
System.Data.SqlClient.SqlException: l'aggiornamento delle colonne con la proprietà rowguidcol non è consentito. La transazione è terminata nel trigger. Il batch è stato interrotto. at System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors (RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo [] batchCommands, Int32 commandCount) su System.Data.Common.DbDataA ...
Come posso impedire al tableadapter di aggiornare questa colonna (il valore è lo stesso)?
Soluzione
È possibile modificare manualmente l'SQL creato per il comando di aggiornamento nella finestra di progettazione DataSet
. Fare clic sull'adattatore e trovare UpdateCommand
. C'è un motivo per cui stai aggiornando la chiave primaria? In caso contrario (e non dovresti esserlo, se possibile), dovresti rimuoverlo dal comando.
Altri suggerimenti
Se la colonna è effettivamente contrassegnata come chiave primaria nel DataSet digitato, l'istruzione aggiornata generata automaticamente non dovrebbe tentare di aggiornarla. Vorrei guardare il designer e ricontrollare che in realtà è la chiave primaria.