所以,我在.Net 4.5中编写LINQ查询时遇到了一些问题,我不确定是否有更好的方法来获取我所追求的内容。我正在尝试返回我的对象列表(详见下文)以及与该列表中每个项目相关联的权限列表,作为每个项目的允许操作列表。
以下是涉及的对象:
这是我目前的疑问:
var sites = from s in _dbContext.Sites
select new FilteredSite()
{
site = s,
actions = (from a in _dbContext.Actions
join ra in _dbContext.Role_actions on a.Id equals ra.Actionid
join r in _dbContext.Roles on ra.Roleid equals r.Id
where r.UserProfiles.Any(u => u.UserId == user.UserId) && ra.Entityid == 2
select a).Distinct().ToList()
};
所以,我的问题归结为这一点 - 我有更好的方法来撤回这个名单吗?本质上,我的想法是,我只撤回用户有权访问的记录列表,并撤回用户之后可以对数据执行的粒度操作列表。
我创建的FilteredSite对象由一个Site和一个List组成,作为一种派生类,但我不确定没有更好的方法可以更自然地做到这一点。
有人有什么想法吗?或者这一般是在这里考虑安全性的错误方法吗?