Oracle
 sql >> Base de données >  >> RDS >> Oracle

Entity Framework ne peut pas mettre à jour les données dans la table avec une clé composite (Oracle)

Veuillez inclure :

  • La définition de l'entité
  • La classe de mappage/configuration du contexte
  • La définition de la table SQL

BackPropagateServerGen

En regardant la trace de la pile, l'élément clé que je vois est BackPropagateServerGen .

Entity Framework exécute votre mise à jour sur la base de données, mais l'une de vos valeurs de clé composite (probablement COPY_ID) est en fait modifiée par l'appel UPDATE. Cette valeur générée par le serveur revient de l'appel SQL, et Entity Framework se plaint alors que la valeur de la clé est en train d'être modifiée.

Donc, je suppose que votre valeur de clé composite COPY_ID est définie comme un identifiant généré par le serveur, mais l'un ou les deux se produisent :

  • Vous mappez vers une vue ou une procédure stockée qui interfère avec ce qu'Entity Framework attendrait d'une mise à jour vanille
  • Vous avez un ou plusieurs déclencheurs sur la table, la vue ou la procédure stockée qui interfèrent avec le résultat.

Si vous avez des déclencheurs, désactivez-les temporairement pour voir si le problème s'arrête ensuite.

Si vous mappez vers une vue ou une procédure stockée, essayez de mapper directement vers la table si possible.

Utilisez tous les outils de profilage dont vous disposez pour capturer le SQL exécuté par le code.

Résumé

Je pense que l'appel UPDATE atteint réellement la base de données, mais le résultat de retour modifie la ou les valeurs de clé, provoquant l'échec d'Entity Framework et annulant probablement la transaction UPDATE (selon la version d'EF que vous utilisez).