我正在尝试将更改保存到记录中,但是我收到了错误
违反PRIMARY KEY约束 'PK_TStoreAssignment'。无法插入 对象'TAssignment'中的重复键。 声明已经终止。
这是亚音速查询
Dim current = DB.Select().From(TStoreAssignment.Schema) _
.Where("assignmentID").IsEqualTo(selectedRow.AssignmentID) _
.ExecuteSingle(Of TStoreAssignment)()
'Modify the sequence
current.ManualSequence = 999
current.Save()
答案 0 :(得分:1)
我发现此错误的两种可能性:
ManualSequence
是TStoreAssignment
的主键(的一部分),而您已经拥有999的其他条目或(可能)SubSonic认为current
是一个新对象,并在您调用Save()
时尝试插入而不是更新它。您可以调试并检查IsNew
属性。如果是这种情况,您可以在MarkOld()
方法之前致电Save
。甚至更好,使用类似的东西:
DB.Update().From(Of TStoreAssignment)() _
.Set(TStoreAssignment.ManualSequenceColumn).EqualTo(999) _
.Where(TStoreAssignment.AssignementIDColumn).IsEqualTo(selectedRow.AssignmentID) _
.Execute()