我在用户和群组之间有多对多的关系,我有一个表格,可以包含群组的权限。所以实体看起来像:
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),由于我无法访问映射表,因此我不确定找到适用权限的最佳方法。最好的方法是什么?
感谢您的帮助, 埃里克
答案 0 :(得分:2)
尝试
var permissions = MyContext.Permissions
.Where(p => p.Group.Users.Any(u => u.Id == theUserId));