Le modifiche al salvataggio subsonico () non funzionano
-
28-10-2019 - |
Domanda
Sto cercando di salvare le modifiche a un record, tuttavia sto ricevendo l'errore
Violazione del vincolo chiave primario "PK_TSTOREASSIGNIMENT". Impossibile inserire la chiave duplicata nel "Tassignment" dell'oggetto. La dichiarazione è stata terminata.
Ecco la query subsonica
Dim current = DB.Select().From(TStoreAssignment.Schema) _
.Where("assignmentID").IsEqualTo(selectedRow.AssignmentID) _
.ExecuteSingle(Of TStoreAssignment)()
'Modify the sequence
current.ManualSequence = 999
current.Save()
Soluzione
Vedo due possibilità per questo errore:
- O
ManualSequence
è (parte di) la chiave primaria diTStoreAssignment
, e hai già un altro ingresso con 999 o (probabilmente) il subsonico pensa
current
è un nuovo oggetto e cerca di inserirlo invece di aggiornarlo quando si chiamaSave()
. Puoi eseguire il debug e controllare ilIsNew
proprietà. In tal caso, puoi chiamareMarkOld()
prima diSave
metodo. O ancora meglio, usa qualcosa di simile:DB.Update().From(Of TStoreAssignment)() _ .Set(TStoreAssignment.ManualSequenceColumn).EqualTo(999) _ .Where(TStoreAssignment.AssignementIDColumn).IsEqualTo(selectedRow.AssignmentID) _ .Execute()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow