2009-07-29 8 views
1

J'ai créé un modèle avec Entity Framework à partir de trois tables de base de données:Entity Framework Les associations

  1. Agents
  2. AgentsGroups
  3. Groupes

AgentsGroups est une table simple avec trois colonnes: 1 id et deux clés étrangères reliant les agents et les groupes (chaque agent peut avoir plusieurs groupes). Des trucs assez basiques. Entity Framework reconnaît correctement les relations entre la table. Maintenant, avec LINQPad Je suis en mesure d'obtenir les noms de tous les groupes associés à un agent à partir de l'agent ID:

from a in Agents 
    join ag in AgentsGroups on a.Code equals ag.AgentCode 
    join g in Groups on ag.GroupCode equals g.Code 
    where a.Code == 10199 
    select g.Name 

Ceci, cependant, ne fonctionne pas sur le programme très comme, en fait, AgentCode et GroupCode sont mappés en tant qu'associations, pas en tant que champs. Je suppose que je dois utiliser Include, mais je ne l'ai jamais utilisé, donc l'aide demandée est: comment pourrais-je traduire l'expression linq semi-working donnée dans une expression similaire donnant les noms de groupes mais en utilisant Associations?

Merci à l'avance

+0

Il n'est pas clair pourquoi la requête donnée ne fonctionnerait pas. Quel est exactement le problème que vous avez? –

Répondre

2

beaucoup plus simple EF:

from a in Agents 
where a.Code == 10199 
from g in a.Groups 
select g.Name 

Vous utilisez presque jamais se joindre à EF.

+0

salut, merci pour la réponse, mais l'expression donnée m'a donné toutes les lignes dans le groupe .. où est l'association? est-ce censé être implicite? – pistacchio

+0

Regardez attentivement les qualificatifs (a., Par exemple). Ce n'est pas implicite, juste petit. Je devinais sur le nom de la propriété de l'association; vous l'avez peut-être appelé autre chose. –