2012-03-23 118 views
1

我有一個多對多的用戶和組之間的關係,我有一個表可以包含一個組的權限。因此,實體看起來像:實體框架,多對多關係和查詢

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));