Pregunta

Tengo un conjunto de datos mecanografiado, y donde llamo TableAdapter.Update (DataRow) , el SQL ejecutado incluye una actualización de la columna de clave principal de la base de datos.

Desafortunadamente, cuando este código se ejecuta en una base de datos replicada, la columna PK tiene establecida la propiedad rowguid , y aparece el siguiente error:

  

System.Data.SqlClient.SqlException: no se permite actualizar columnas con la propiedad rowguidcol.   La transacción terminó en el disparador. El lote ha sido abortado.     en System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors (RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo [] batchCommands, Int32 commandCount)     en System.Data.Common.DbDataA ...

¿Cómo evito que el tableadapter actualice esta columna (el valor es el mismo)?

¿Fue útil?

Solución

Puede editar manualmente el SQL creado para el comando de actualización en el diseñador DataSet . Simplemente haga clic en el adaptador y busque el UpdateCommand . ¿Hay alguna razón por la que está actualizando la clave primaria? Si no es así (y no debería serlo, si es posible), debería eliminarlo del comando.

Otros consejos

Si su columna está realmente marcada como la clave principal en el DataSet escrito, la declaración actualizada generada automáticamente no debería intentar actualizarla. Vería al diseñador y comprobaría que es la clave principal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top