9 votes

La clé étrangère doit être mappée à un AssociationSet ou EntitySets participant à une association de clé étrangère du côté conceptuel.

Je tente d'utiliser une relation un à un (maître, détail) dans Entity Framework, cependant, je reçois cette erreur:

Problème de mapping des fragments commençant aux lignes 254, 443: Contrainte de clé étrangère 'options_Advanced_FK00' de la table options_Advanced (ProductID) à la table products (catalogid) :: Mappage insuffisant: la clé étrangère doit être mappée à un AssociationSet ou à des EntitySets participant à une association de clé étrangère du côté conceptuel

Voici l'association dans le designer:

entrer la description de l'image ici

Il indique produit --> 0..1 options_Advanced

J'ai utilisé le modèle d'abord et non le code en premier. Ma table Options Advanced a un produit associé à chaque enregistrement

Produits

  • ID
  • CatalogID
  • Nom

Options_Advanced

  • ID
  • ProductID
  • Nom

7voto

Rick Points 71

J'ai rencontré cela lorsque je cherchais une solution au même problème dans un système sur lequel je travaillais.

J'ai rencontré cela dans VS2010 et il semble que cela se produise lorsque vous générez le modèle à partir de la base de données comme je le faisais et que vous n'incluez pas les objets en même temps. c'est-à-dire, en incluant une table et pas l'autre.

J'ai contourné le problème à ce stade en supprimant le modèle puis en recréant l'ensemble du modèle et en incluant chaque table dans le modèle que je pensais avoir besoin.

Maintenant, ce qu'il se passe lorsque vous ajoutez une nouvelle table, je ne suis pas certain car je n'ai pas encore eu à le faire car je travaille sur une ancienne application que nous souhaitons convertir.

3voto

Flame_Phoenix Points 5559

J'ai également eu ce problème après avoir ajouté une nouvelle table à mon edmx. Malheureusement pour moi, des clés étrangères corrompues sont également apparues.

Tout d'abord, j'ai essayé de le réparer en supprimant et en ré-ajoutant la table nouvellement ajoutée. Cela n'a pas fonctionné.

Ensuite, après avoir lu cet article sur le côté obscur d'EF, j'ai fini par opter pour la deuxième solution et réparer le fichier XML manuellement. J'ai supprimé manuellement toutes les clés étrangères et les associations.

Admettons, cette solution est loin d'être parfaite, à chaque fois que je mets à jour mon edmx je dois à nouveau appliquer la solution. Cependant, puisque je dois déjà le faire de toute façon pour d'autres tables et d'autres problèmes (problèmes de code hérité), c'est un effort qui ne me dérange vraiment pas.

Une chose est sûre, si vous avez besoin d'une solution rapide, la voici.

J'espère avoir aidé.

1voto

Joseph Anderson Points 1421

J'ai passé de .net 3.5 à .net 4 et cela a résolu le problème.

0voto

erisch Points 1

Je sais que je suis en train de ressusciter un ancien post, mais j'ai trouvé une résolution différente à cette erreur.

Lorsque j'ai reçu cette erreur, je modifiais un modèle d'entité existant pour inclure de nouvelles tables avec des contraintes de clé étrangère vers une table principale. Il s'est avéré que, dans la base de données, je n'avais pas défini les relations de clé étrangère entre la table principale et les tables nouvellement ajoutées. Oups.

Après avoir défini ces relations dans la base de données, j'ai alors annulé toutes les modifications que j'avais apportées dans le modèle. En recommençant avec un modèle valide, j'ai sélectionné 'mettre à jour le modèle depuis la base de données' et j'ai obtenu le modèle que je souhaitais, sans erreur.

0voto

stannius Points 533

J'ai eu ce problème lorsque j'ai changé les clés étrangères pointant vers une table différente. La propriété de navigation a été nettoyée mais il y avait toujours des références à l'ancienne relation cachées dans le fichier edmx. J'ai édité le XML et manuellement supprimé les deux références à l'ancienne relation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X