Dans votre modification, vous mentionnez le "Plusieurs entités ajoutées peuvent avoir la même clé primaire". Erreur. Sans connaître tous les détails de ce que vous faites ici, il semble que vous créez une relation avec une entité - dont il y en a deux dans le contexte avec le même ID. Il s'agit probablement de nouvelles entités qui n'ont pas encore été enregistrées, où elles obtiennent un ID généré automatiquement à partir de la base de données. Si la relation est basée sur l'ID, il y a une certaine ambiguïté car Entity Framework est incapable de déterminer vers laquelle des nouvelles entités la relation pointe réellement - elles ont toutes les deux l'ID vers lequel la relation pointe.
Il existe deux correctifs potentiels.
-
Générez un identifiant temporaire et unique pour les entités au fur et à mesure qu'elles sont créées dans le contexte. Entity Framework le supprimera au fur et à mesure que l'entité est enregistrée, mais jusqu'à ce point, il peut l'utiliser pour différencier une nouvelle entité de l'autre. J'ai utilisé des entiers négatifs à cette fin dans le passé.
-
Ne créez pas les relations à l'aide d'ID mais plutôt sur des références d'entité. Si Entity Framework a une référence directe à l'entité, il n'a pas besoin de passer par le processus d'identification de l'entité basée sur des identifiants non uniques et ne devrait pas avoir ce problème.