2010-08-16 5 views
5

J'ai un modèle Entity Framework utilisant une table par hiérarchie. La classe de base est abstraite et il existe deux classes dérivées.Entity Framework Table par erreur de hiérarchie 3034

Je souhaite créer des associations entre ces deux classes dérivées et une autre classe. Ce sont des relations plusieurs-à-plusieurs, donc passez par une table de jointure.

Ajoutant la première association est ok, mais quand j'ajoute le second je reçois cette erreur:

Erreur 3034: Problème de fragments de cartographie à partir de lignes 1074, 1082: deux entités avec des clés éventuellement différentes sont mis en correspondance avec la même rangée. Assurez-vous que ces deux fragments de mappage mappent les deux extrémités de l'associationSet aux colonnes correspondantes.

Heres une image des parties pertinentes du modèle (les associations LabelImages et PresetImages sont ceux qui donnent la peine):

alt text http://img810.imageshack.us/img810/9026/model1.png

+0

ahh quelqu'un avec la même chose que moi - ne supposez pas que vous avez trouvé une réponse. –

Répondre

1

Un peu en retard, mais de toute façon:

Ce n'est pas vraiment possible si vous vous rapportez à la base de données sous-jacente. Entity framework créera une table de jointure pour l'association entre la table d'image et la table de produit alors que vous en avez réellement besoin deux.

Je suggère d'utiliser une option différente pour votre hiérarchie d'héritage dans la base de données. Ou mettre la relation entre l'image et le produit, pas les sous-types. Vous pouvez ajouter des méthodes sur la classe de produit à filtrer sur un type spécifique, une pour les images prédéfinies une pour les étiquettes d'étiquettes. Ou ajoutez une méthode à votre classe de contexte pour récupérer un type d'image particulier pour un produit à l'aide de OfType.