Prevent typisierten Datasets zu aktualisieren PK Spalte
-
05-07-2019 - |
Frage
Ich habe eine typisierte Datasets, und wo ich TableAdapter.Update(DataRow)
nennen, ausgeführt die SQL enthält eine Aktualisierung der Primärschlüsselspalte der Datenbank.
Leider, wenn dieser Code auf einer replizierten Datenbank ausgeführt wird, die PK-Spalte hat die rowguid
Eigenschaft festgelegt, und ich erhalte die folgenden Fehler:
System.Data.SqlClient.SqlException: Aktualisieren von Spalten mit der ROWGUIDCOL-Eigenschaft ist nicht erlaubt. Die Transaktion in dem Trigger beendet. Der Ansatz wird abgebrochen. bei System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors (RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo [] batchCommands, Int32 Command) bei System.Data.Common.DbDataA ...
Wie verhindere ich die Tableadapter aus Aktualisierung dieser Spalte (der Wert ist gleich)?
Lösung
Sie können manuell den für den Update-Befehl in dem DataSet
Designer erstellt SQL Bearbeiten Sie einfach auf dem Adapter klicken und die UpdateCommand
zu finden. Gibt es einen Grund, dass Sie den Primärschlüssel sind zu aktualisieren? Wenn nicht (und Sie sollen nicht sein, wenn überhaupt möglich), dann sollten Sie das von dem Befehl entfernen.
Andere Tipps
Wenn Sie Ihre Spalte tatsächlich als Primärschlüssel in der typisierten DataSet markiert wird die automatische Aktualisierung Anweisung generiert sollte es nicht zu aktualisieren versuchen, zu. Ich würde Blick auf die Designer und überprüfen, dass es tatsächlich der Primärschlüssel ist.