Clés uniques non reconnues par Entity Framework

J’ai deux tables, les Reports et les Visualizations . Reports ont un champ, VisualizationID , qui pointe vers le champ de Visualization du même nom via une clé étrangère. Il possède également une clé unique déclarée sur le terrain. VisualizationID n’est pas nullable. Cela signifie que la relation doit être comprise entre 0..1 et 1, car chaque enregistrement de Reports doit être associé à un enregistrement de Visualizations unique et non nul.

Entity Framework ne le voit pas de cette façon. Je reçois l’erreur suivante:

Error 113: Multiplicity is not valid in Role 'Report' in relationship 'FK_Reports_Visualizations'. Because the Dependent Role properties are not the key properties, the upper bound of the multiplicity of the Dependent Role must be *.

Quel est le problème ici? Comment puis-je faire en sorte que l’EF reconnaisse la multiplicité de relations appropriée?

L’EF se plaint car il semble que vous utilisiez une association FK – ce qui signifie que l’identificateur VisualizationID est une propriété de l’entité et qu’il existe également une référence Visualization – ce que vous ne pouvez pas faire avec les associations FK.

Si toutefois vous utilisez des associations indépendantes – ce qui signifie qu’il n’y a pas de propriété VisualizationID – vous pouvez affiner la cardinalité.

La solution consiste donc à supprimer la propriété VisualizationID de l’entité. Vous devez alors définir une carte de l’association.

J’espère que cela t’aides

Alex

Je viens de trébucher sur le même problème – Alex, votre explication est correcte dans mon cas, mais bien sûr en supprimant la colonne FK du modèle conceptuel, je ne suis plus en mesure de changer plus tard d’object lié en modifiant la valeur du champ FK … Je vais devoir revenir aux vieilles astuces pour le faire!

Y a-t-il des plans pour nous permettre d’avoir notre gâteau et de le manger aussi avec des relations de 1 à 0..1, c’est-à-dire pouvoir aussi avoir le champ FK?

Greg

(ps j’aurais commenté, mais mon représentant n’est pas encore assez haut!)