2012-03-23 15 views
1

ユーザーとグループの間に多対多の関係があり、グループのアクセス許可を含むテーブルがあります。私は(該当するものは、ユーザーが属するすべてのグループのためのものである)ユーザーに適用される権限を見つける方法を疑問に思ってEntity Framework、多対多リレーションシップとクエリ

public class Group 
{ 
    public int Id { get; set; } 
    public virtual ICollection Users { get; set; } 
} 

public class User 
{ 
    public int Id { get; set; } 
    public virtual ICollection Groups { get; set; } 
} 

public class Permission 
{ 
    public int Id { get; set; } 
    public virtual Group { get; set; } 
    public int Value { get; set; } 
} 

:だからエンティティは次のようになり。

データベースには、UserGroupsというマッピングテーブルがあります。私はそれにアクセスした場合は、LINQクエリは次のようになります。

var permissions = 
    from p in MyContext.Permissions 
    join m in this.DbContext.UserGroups on p.GroupId equals m.GroupId 
    where m.UserId.Equals(theUserId) 
    select g; 

私はマッピングテーブルへのアクセスを持っていないので、私は見つけるための最善の方法を確認していない、(my related questionを参照してください)該当するアクセス許可。それを行う最善の方法は何ですか?あなたの助けのための

おかげで、 エリック

答えて

2

var permissions = MyContext.Permissions 
       .Where(p => p.Group.Users.Any(u => u.Id == theUserId)); 
をお試しください
関連する問題