Les modifications de SubSonic Save () ne fonctionnent pas
-
28-10-2019 - |
Question
J'essaie d'enregistrer les modifications apportées à un enregistrement, mais j'obtiens l'erreur
Violation de la contrainte PRIMARY KEY «PK_TStoreAssignment».Impossible d'insérer dupliquer la clé dans l'objet 'TAssignment'. La déclaration a été terminée.
Voici la requête subsonique
Dim current = DB.Select().From(TStoreAssignment.Schema) _
.Where("assignmentID").IsEqualTo(selectedRow.AssignmentID) _
.ExecuteSingle(Of TStoreAssignment)()
'Modify the sequence
current.ManualSequence = 999
current.Save()
La solution
Je vois deux possibilités pour cette erreur:
- Soit
ManualSequence
fait (partie de) la clé primaire deTStoreAssignment
, et vous avez déjà une autre entrée avec 999 -
ou (probablement) SubSonic pense que
current
est un nouvel objet et essaie de l'insérer au lieu de le mettre à jour lorsque vous appelezSave()
.Vous pouvez déboguer et vérifier la propriétéIsNew
.Si tel est le cas, vous pouvez appelerMarkOld()
avant la méthodeSave
.Ou mieux encore, utilisez quelque chose comme:DB.Update().From(Of TStoreAssignment)() _ .Set(TStoreAssignment.ManualSequenceColumn).EqualTo(999) _ .Where(TStoreAssignment.AssignementIDColumn).IsEqualTo(selectedRow.AssignmentID) _ .Execute()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow