Использование NHibernate Я пытаюсь использовать лямбда-выражение для извлечения объектов на основе состояния и значений между родительским дочерним отношением. AbstractWorkflowRequestInformation
имеет коллекцию WorkflowRequestInformationAction
. Каждый из двух классов имеет свои свойства статуса. Для того, чтобы проиллюстрировать здесь сокращенные классы, как они относятся к этому запросу:Исключение «Указанный метод не поддерживается». будучи выброшенным из выражения NHibernate IQueryable при использовании. Любое расширение
public class AbstractWorkflowRequestInformation
{
public virtual RequestStatus RequestStatus { get; set; }
public virtual IEnumerable<WorkflowRequestInformationAction>
WorkflowRequestInformationActionList { get; set; }
}
public class WorkflowRequestInformationAction
{
public virtual ActionStatus Status { get; set; }
public virtual string RoleIdentifier { get; set; }
public virtual string RoleName { get; set; }
}
Учитывая эти отношения, я хочу, чтобы получить объекты AbstractWorkflowRequestInformation основан на List<KeyValuePair<string, string>>
называемых ролей. Я понимаю, что исключение вызвано отсутствием разбора метода расширения Any(...)
, но я не уверен в альтернативных запросах. До сих пор все перестановки на рисунке запроса вызвали те же или подобные исключения:
public IEnumerable<IRequestInformation> GetRequestsPendingActionBy(
List<KeyValuePair<string, string>> roles)
{
var results = GetSession().Query<AbstractWorkflowRequestInformation>()
.Where(r => r.RequestStatus == RequestStatus.Pending
&& r.WorkflowRequestInformationActionList
.Any(a => ActionStatus.Pending == a.Status
&& roles.Any(kp => kp.Key == a.RoleName
&& kp.Value == a.RoleIdentifier)))
.ToList();
return results;
}
Конечная цель состоит в том, чтобы получить только те объекты, которые AbstractWorkflowRequestInformation
находятся на рассмотрении и иметь отложенную WorkflowRequestInformationAction соответствия с KeyValuePair в роли перечислимых.
Я не привязан к использованию выражения лямбда, поскольку это выражение уже стало громоздким, если есть более элегантное выражение ICriteria, я все уши. Каковы мои возможности ограничить мои результаты на основе значений в моем roles List<KeyValuePair<string, string>>
, но исключить исключение «Указанный метод не поддерживается»?
короткий ответ ... не использовать NH Linq – dotjoe
@ dotjoe Я поддаюсь этому ответу, но есть ли у вас альтернатива с использованием HQL, ICriteria и т. Д.? – ahsteele