SubSonic Save () изменения не работают - PullRequest
0 голосов
/ 04 мая 2011

Я пытаюсь сохранить изменения в записи, но получаю сообщение об ошибке

Нарушение ограничения 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 Ответ

1 голос
/ 05 мая 2011

Я вижу две возможности для этой ошибки:

  • Либо 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()
    
...