Los cambios subsonic save () no funcionan
-
28-10-2019 - |
Pregunta
Estoy tratando de guardar los cambios en un registro, sin embargo, recibo el error
Violación de la restricción de la clave primaria 'PK_TSTOREASSIGNMENT'. No se puede insertar la clave duplicada en el objeto 'Tassignment'. La instrucción se ha terminado.
Aquí está la consulta subsónica
Dim current = DB.Select().From(TStoreAssignment.Schema) _
.Where("assignmentID").IsEqualTo(selectedRow.AssignmentID) _
.ExecuteSingle(Of TStoreAssignment)()
'Modify the sequence
current.ManualSequence = 999
current.Save()
Solución
Veo dos posibilidades para este error:
- O
ManualSequence
es (parte de) la clave principal deTStoreAssignment
, y ya tienes otra entrada con 999 o (probablemente) subsonic piensa
current
es un objeto nuevo y trata de insertarlo en lugar de actualizarlo cuando llameSave()
. Puedes depurar y verificar elIsNew
propiedad. Si ese es el caso, puede llamarMarkOld()
antes deSave
método. O incluso mejor, usa algo como:DB.Update().From(Of TStoreAssignment)() _ .Set(TStoreAssignment.ManualSequenceColumn).EqualTo(999) _ .Where(TStoreAssignment.AssignementIDColumn).IsEqualTo(selectedRow.AssignmentID) _ .Execute()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow