我在 .NET 3.5 上使用实体框架,但我一生都无法弄清楚如何编写一些 Linq 来遍历以下设计:
基本上我想弄清楚用户是否拥有特定EntityType的权限(EntityAction)。现在用户和角色在 Active Directory 中维护 - 但系统可以进行查找以查找用户所属的角色/组。
假设我有以下数据:
实体类型
实体类型 ID:1
名称:实体一
用户
用户 ID:1
账户名:安德斯
角色
角色 ID:1
帐户名称:MyRole
实体动作
实体操作 ID:1
名称:做点什么
角色实体动作关联
(Role 和 EntityAction 之间的关联)
实体操作 ID:1
角色 ID:1
我将用户(来自 Active Directory)的组名存储在列表中:
List<string> groupNames = new List<string>();
问题
但是,我试图拼凑一些 Linq,以找出用户(或他在 List groupNames 中分配的角色之一)是否与给定 EntityType 的特定 EntityAction 相关联。
// get reference to the user
User user = context.Users.Where(x => x.AccountName == "Andez").FirstOrDefault();
// get reference to the entity type we want to query
EntityType et = context.EntityTypes.Where(x => x.Name == "Entity One").FirstOrDefault();
// get list of all entity actions for the user
var result = from ea in et.EntityActions
where ea.EntityActionId == 1 && (ea.Users.Contains(user) || ea.Roles.Count(r => groupNames.Contains(r.AccountName)) > 0)
select ea;
当然,我的查询在上面不起作用-它不返回任何结果(result.ToList().Count == 0)
我需要这方面的指示。
谢谢