在 EntityFramework 中加入两个 M:N 关系
Posted
技术标签:
【中文标题】在 EntityFramework 中加入两个 M:N 关系【英文标题】:Join two M:N relations in EntityFramework 【发布时间】:2015-07-24 12:00:54 【问题描述】:看看下面我的模型,
-
每个用户都有 n 个角色
每个角色获得 n 个权限/每个权限获得 n 个角色
我正在尝试获取用户权限,以便能够在其上执行 group by, 我该怎么办?
我打算编写如下所示的 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】:要获取所有用户的权限,您可以使用SelectMany
扩展方法:
var permissions=context.Users.Single(u => u.Id == userId).Roles.SelectMany(r=>r.Permissions).Distinct();
还可以调用Distinct
扩展方法来删除重复项。
【讨论】:
作为 EF 的新手,我从未注意到有 SelectMany!你救了我的一周,我不知道该怎么说谢谢:)以上是关于在 EntityFramework 中加入两个 M:N 关系的主要内容,如果未能解决你的问题,请参考以下文章