目前,我在返回 a 的方法中有以下两个 LINQ 查询(针对 EF 6.1)bool?
:
if (db.Permissions.Any(p => p.Key == permission && p.Roles.Any(r => !r.IsAllowed
&& r.Role.Users.Any(u => u.UserId == userId))))
{
return false;
}
if (db.Permissions.Any(p => p.Key == permission && p.Roles.Any(r => r.IsAllowed
&& r.Role.Users.Any(u => u.UserId == userId))))
{
return true;
}
return null;
第一个检查用户是否处于任何角色,如果是!IsAllowed
,则返回false
(=> 用户/角色被拒绝权限,这会否决任何“允许”)。然后它检查用户是否处于任何已IsAllowed
设置并true
在这种情况下返回的角色。如果没有为用户的任何角色设置权限,则返回null
。
在大多数情况下,这会导致对数据库的两次查询,因为!IsAllowed
用户并不经常这样做。
有没有办法对直接返回的数据库使用一个查询bool?
?