2015-07-19 1 views
1

J'ai un ensemble de données qui est un nombre d'objets indépendants (personne, propriété, travail) et chacun d'entre eux sont liés à un autre objet (note).Entity Framework avec des relations complexes

La relation est formée d'une clé étrangère (le principal en personne, la propriété ou le travail) et d'un type qui est simplement un champ varchar.

donc la note ressemble fondamentalement:

Id 
RecordId(foreign key) 
RecordType(person, propery, job as varchar) 
Note Detail 

Le problème auquel sont confrontés est, chacun des objets primaires peuvent avoir la même clé pour lors de l'utilisation entityframework avec inclure la personne peut avoir des notes d'emploi. Je peux filtrer ceci plus tard avec une clause où RecordType == 'XYZ' que je sens est désordonné. Malheureusement, l'inclusion n'a pas la capacité d '«inclure où».

Quelqu'un pourrait-il suggérer une autre approche?

Répondre

0

J'ai eu des problèmes similaires. Une solution consiste à avoir une relation Table par Hiérarchie. Vous vous retrouvez avec une Note (classe de base) et PersonNote, PropertyNote, etc. Curieusement, EF veut un champ supplémentaire pour chaque type de référence, donc votre table aura besoin des champs RecordId_1, RecordId_2, etc. en plus du RecordId existant. C'est un peu inintéressant si vous ne générez pas la base de données avec Code First.

L'autre solution que j'utilise est de créer des vues dans la base de données qui effectuent le filtrage souhaité, en combinant la note et l'enregistrement source, puis en mappant simplement EF aux vues.