2009-06-07 7 views
3

J'utilise la technique TPH (Table per Hierarchy) pour mapper un ensemble d'entités.Entity Framework - Association des entités dérivées

DB Schema: Table UserGroupLabelSpreads comportant des champs "UserId", "GroupId" et "LabelId" avec des champs communs supplémentaires. DAL Objects: - UserGroupLabelSpread classe abstraite. - UserSpread avec un discriminateur ayant seulement UserId non nul. - GroupSpread avec un discriminateur ayant uniquement GroupId non nul. - LabelSpread avec un discriminateur ayant seulement LabelId non nul.

J'ai réussi à faire fonctionner cette chose, mais lorsque j'essaie de connecter l'entité UserSpread à une entité "User" existante, j'obtiens l'erreur suivante: Erreur 1 Erreur 3034: Problème dans les fragments de mappage à partir des lignes 487, 554: Deux entités avec des clés différentes sont mappées sur la même ligne. Assurez-vous que ces deux fragments de mappage ne mappent pas deux groupes d'entités dont les clés se chevauchent sur le même groupe de lignes.

J'ai fouillai autour de comprendre que le problème est que je mapper la colonne UserId deux fois: une fois pour la condition discriminante et la seconde pour l'association.

Ai-je raison avec mon hypothèse? -Puis-je obtenir cette chose au travail?

Merci, Nir.

+1

Désolé, l'erreur correcte est: erreur Erreur 3007: Problème dans la cartographie des fragments à partir des lignes 242, 272: colonne non-clé primaire (s) [UserId] sont en cours mis en correspondance dans les deux fragments à différents concepts propriétés secondaires - l'incohérence des données est possible car les propriétés secondaires conceptuelles correspondantes peuvent être modifiées indépendamment. – nirpi

Répondre

2

Il existe une version mise à jour de EDM Generator qui devrait être en mesure de vous aider. Vous pouvez l'utiliser pour générer, valider et plus encore. Désolé, j'ai eu le mauvais lien. Here is the one to v2. Je crois que j'ai eu ce problème. Si je ne me trompe pas, c'est parce que je me suis trompé de mappage sur les clés d'étranger. J'utilisais cependant la beta 1 de EF4 à ce moment-là et certains des messages étaient erronés à cause des proxies. Vérifiez vos clés forreign. Blog.Id ---> Blog_id était mon problème. J'ai eu Blog.Id -> Blog.Id et puis BlogEntry.Id ----> Blog.Blog_Id qui bien sûr ne fonctionne pas, mais le concepteur est un peu impitoyable quand il s'agit de mapper des clés.

Questions connexes