2010-04-15 4 views
0

J'ai quatre tables:L2E plusieurs à plusieurs requêtes

Users     PrivilegeGroups  rdPrivileges  LinkPrivilege 
-----------   ----------------  ---------------  --------------- 
userId(pk)    privilegeGroupId(pk) privilegeId(pk)  privilegeId(pk, fk) 
privilegeGroupId(fk) name     code    privilegeGroupId(pk, fk) 

L2E ne va pas créer une entité LinkPrivilege pour moi. Nous avons donc seulement Users, PrivilegeGroups et rdPrivileges entités. et rdPrivileges sont plusieurs à plusieurs relation. Ce que je dois faire est de récupérer tous les code de rdPrivileges table basée sur un userId passé. Comment puis-je le faire?

EDIT 

credite à juharr, le code de travail:

var codes = from u in db.Users 
      from pg in db.PrivilegeGroups 
      from p in pg.rdPrivileges 
      where u.UserId == passedInUserId 
      && u.PrivilegeGroups.PrivilegeGroupId == pg.PrivilegeGroupId 
      select p.Code; 
+0

En fait, il s'agit de linq-to-sql, pas de linq-to-entities. – juharr

+0

@juharr: En fait ce n'est pas le cas. C'est Entity Framework, et donc linq-to-entities. Vous êtes probablement confondu avec linq-to-objects? –

+0

@Sander Je déteste la terminologie parfois. – juharr

Répondre

3

Je pense que quelque chose comme ça fonctionnerait.

var codes = from u in Users 
      from pg in u.PrivilegeGroups 
      from p in pg.rdPrivileges 
      where u.userId == "SomeUserID" 
      select p.code;