NHibernateの利用私はラムダ式を使用して、親子関係間のステータスと値に基づいてオブジェクトを取得しようとしています。AbstractWorkflowRequestInformation
のコレクションがありWorkflowRequestInformationAction
ます。2つのクラスには、それぞれ独自のStatusプロパティがあります。ここで説明するために、このクエリに関連する省略されたクラスを示します。
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; }
}
List<KeyValuePair<string, string>>
この関係を前提として、呼び出されたロールに基づいてAbstractWorkflowRequestInformationオブジェクトを取得したいと思います。例外は拡張メソッドの解析の欠如によって引き起こされていることを認識していますが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
最終的な目標は、保留中のオブジェクトと、列挙可能なロールのKeyValuePairに一致する保留中のWorkflowRequestInformationActionを持つオブジェクトのみを取得することです。
ラムダ式を使用することに夢中になっているわけではありません。この式はすでに扱いにくくなっているため、よりエレガントなICriteria式があれば、私はすべての耳です。の値に基づいて結果を制限しroles List<KeyValuePair<string, string>>
、「指定されたメソッドはサポートされていません」という例外を防ぐためのオプションは何ですか?