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()
È stato utile?

Soluzione

Vedo due possibilità per questo errore:

  • O ManualSequence è (parte di) la chiave primaria di TStoreAssignment, 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 chiama Save(). Puoi eseguire il debug e controllare il IsNewproprietà. In tal caso, puoi chiamare MarkOld() prima di Save 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
scroll top