在EntityFramework中加入两个M:N关系

时间:2015-07-24 12:00:54

标签: c# linq entity-framework orm

请看下面的模型,

  1. 每位用户都有n个角色
  2. 每个角色都有n个权限/每个权限都有n个角色
  3. 我试图获得用户权限,以便能够通过执行组, 我怎么能这样做?

    My data model

    我打算写一个LINQ查询,如下所示:

    from uRole in context.Users.Single(u => u.Id == userId).Roles
         join p in context.Permission.Where(p => p.Type == ModelEnums.PermissionType.Module)
    

    我不知道如何撰写查询,任何人都可以指导我吗?

1 个答案:

答案 0 :(得分:2)

要获得所有用户的权限,您可以使用SelectMany扩展程序方法:

var permissions=context.Users.Single(u => u.Id == userId).Roles.SelectMany(r=>r.Permissions).Distinct();

同时调用Distinct扩展名方法删除重复项。