Question

J'ai un ensemble de données typé et où j'appelle TableAdapter.Update (DataRow) , le SQL exécuté inclut une mise à jour de la colonne de clé primaire de la base de données.

Malheureusement, lorsque ce code est exécuté sur une base de données répliquée, la colonne PK a la propriété rowguid et le message d'erreur suivant s'affiche:

  

System.Data.SqlClient.SqlException: la mise à jour de colonnes avec la propriété rowguidcol n'est pas autorisée.   La transaction s'est terminée dans le déclencheur. Le lot a été abandonné.     sur System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors (RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo [] batchCommands, Int32 commandCount)     sur System.Data.Common.DbDataA ...

Comment empêcher le tableadapter de mettre à jour cette colonne (la valeur est la même)?

Était-ce utile?

La solution

Vous pouvez modifier manuellement le code SQL créé pour la commande de mise à jour dans le concepteur DataSet . Cliquez simplement sur l'adaptateur et recherchez le UpdateCommand . Y a-t-il une raison pour laquelle vous mettez à jour la clé primaire? Si ce n'est pas le cas (et vous ne devriez pas l'être, si possible), vous devriez alors le supprimer de la commande.

Autres conseils

Si votre colonne est effectivement marquée comme clé primaire dans le DataSet typé, l'instruction mise à jour générée automatiquement ne doit pas essayer de la mettre à jour. Je regarderais le concepteur et vérifierais qu'il s'agit bien de la clé primaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top