Здесь нет необходимости в коррелированном подзапросе.Все, что делает ваш внешний запрос - это выборка EntitySecurityKey.Name
, когда Allow == true
.Вы можете выполнить эту логику с помощью простого оператора if
после запроса.
private string GetEntitySecurityKeyNameIfAllowed(ISession session, string operationName, string userName)
{
var result = session.Query<Permission>()
.Where(p => p.Operation.Name == operationName
&& p.User.Name == userName)
.OrderByDescending(p => p.Level)
.ThenBy(p => p.Allow)
.Select(p => new
{
p.Allow,
p.EntitySecurityKey.Name
})
.FirstOrDefault();
return result != null && result.Allow
? result.Name
: null;
}