Question

I am trying to save changes to a record, however I am getting the error

Violation of PRIMARY KEY constraint 'PK_TStoreAssignment'. Cannot insert duplicate key in object 'TAssignment'. The statement has been terminated.

Here is the subsonic query

Dim current = DB.Select().From(TStoreAssignment.Schema) _
                                 .Where("assignmentID").IsEqualTo(selectedRow.AssignmentID) _
                                 .ExecuteSingle(Of TStoreAssignment)()

'Modify the sequence
 current.ManualSequence = 999
 current.Save()
Was it helpful?

Solution

I see two possibilities for this error:

  • Either ManualSequence is (part of) the primary key of TStoreAssignment, and you already have an other entry with 999
  • or (probably) SubSonic thinks current is a new object and tries to insert it instead of updating it when you call Save(). You can debug and check the IsNewproperty. If that's the case, you may call MarkOld() before the Save method. Or even better, use something like:

    DB.Update().From(Of TStoreAssignment)() _
        .Set(TStoreAssignment.ManualSequenceColumn).EqualTo(999) _
        .Where(TStoreAssignment.AssignementIDColumn).IsEqualTo(selectedRow.AssignmentID) _
        .Execute()
    
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top