【问题标题】:Join two M:N relations in EntityFramework在 EntityFramework 中加入两个 M:N 关系
【发布时间】:2015-07-24 12:00:54
【问题描述】:

看看下面我的模型,

  1. 每个用户都有 n 个角色
  2. 每个角色获得 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)

我不知道如何编写查询,有人可以指导我吗?

【问题讨论】:

  • 那么,您为什么不编写和测试查询的输出并告诉我们结果/问题?
  • 问题是我不知道怎么写查询。

标签: c# linq entity-framework orm


【解决方案1】:

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

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

还可以调用Distinct 扩展方法来删除重复项。

【讨论】:

  • 作为 EF 的新手,我从未注意到有 SelectMany!你救了我的一周,我不知道该怎么说谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多