繁体   English   中英

实体框架使用Linq查询多对多

[英]Entity Framework Querying Many to Many using Linq

除了需要为每个安全对象分配的权限列表之外,我还需要创建lambda查询,该查询允许我获取用户(帐户)被授权访问的安全对象

该方法是List<AuthObject> GetUserAccessList (int accountId)

AuthObject:

 public class AuthObject
{
    public string Obj { get; set; } // name of the security object
    public List<String> Permissions { get; set; } //name of the permissions 
}

在此处输入图片说明

使用2个查询查询您的数据,然后将它们组合在内存中。

var securityObjects = await context.SecurityObjects.Where(so => so.SecurityPermissions.Any(sp => sp.SecurityRoles.Any(sr => sr.Accounts.Any(a => a.ID == accountId)))).ToListAsync().COnfigureAwait(false);
var securityPermissionsByObjectId = (await context.SexurityPermissions.Where(sp =>sp.SecurityRoles.Any(sr => sr.Accounts.Any(a => a.ID == accountId))).ToListAsync().ConfigureAwait(false)).GroupBy(sp => sp.SecurityObjectID).ToDictionary(g => g.Key, g => g.Select(sp => sp.Name).ToList());

var result = securityObjects.Select(so => new AuthObject
{
    Obj = so.Name,
    Permissions = securityPermissionsByObjectId[so.ID]
})
.ToList();

return result;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM