【发布时间】:2011-08-04 01:26:13
【问题描述】:
我的架构是一个相当简单的成员和角色架构:
Users table:
UserId (PK)
UserName
etc...
Roles table:
RoleId (PK)
RoleName
UsersInRole table
UserId (FK to Users table)
RoleId (FK to ROles table)
因此,我们得到了多对多表 UsersInRole 以及其他两个表。当我将架构添加到 EF 时,生成的 ORM 代码(和 EF 设计器)只显示用户和角色(没问题,EF 管理多对多)。
所以,这是我的问题。我想列出所有没有“超级管理员”角色的用户。似乎是一个简单的问题,只需在 EF 中使用 SelectMany。问题是一个用户可能有多个角色,其中之一是“超级管理员”。如果我使用 SelectMany(如下所示),除了其他角色之外,我仍然会获得那些具有“超级管理员”的用户。 SelectMany 仅在用户具有一个角色并且该角色是“超级管理员”时才有效
我已经尝试将 SQL 放在一起,以便将其用于 Linq-to-EF,但也没有任何运气。
var usrQry = context.Roles.Where(r => r.RoleName != "Super Admin")
.SelectMany(r => r.Users);
任何帮助表示赞赏 - 在此先感谢。
【问题讨论】:
标签: .net sql entity-framework-4 linq-to-entities