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)?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top