SubSonic Save()更改无效

时间:2011-05-03 20:38:07

标签: vb.net subsonic2.2

我正在尝试将更改保存到记录中,但是我收到了错误

  

违反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()

1 个答案:

答案 0 :(得分:1)

我发现此错误的两种可能性:

  • ManualSequenceTStoreAssignment的主键(的一部分),而您已经拥有999的其他条目
  • 或(可能)SubSonic认为current是一个新对象,并在您调用Save()时尝试插入而不是更新它。您可以调试并检查IsNew属性。如果是这种情况,您可以在MarkOld()方法之前致电Save。甚至更好,使用类似的东西:

    DB.Update().From(Of TStoreAssignment)() _
        .Set(TStoreAssignment.ManualSequenceColumn).EqualTo(999) _
        .Where(TStoreAssignment.AssignementIDColumn).IsEqualTo(selectedRow.AssignmentID) _
        .Execute()