プロパティまたはそのラベル(参照されている.Parent.ChildLabelを意味する)が特定のラベル値と等しいデータベースからQueriedタイプのすべてのエンティティを取得しようとしています。ReferencedexampleLabelIdexampleId
私は使用してみました:
var result = nhibernateSession
.Query<Queried>()
.Where(queried => queried.SelfReferencing.GetSelfOrAncestor("exampleLabel") == exampleId)
.ToList();
GetSelfOrAncestorしかし、「System.NotSupportedException」をスローします。おそらく、を SQLに変換する方法がわからないためです。
このメソッドは、呼び出されたインスタンスGetSelfOrAncestor(string label)の を返します。または、と等しい条件を満たすその祖先を返します。それ以外の場合は 0 を返します。IdSelfReferencingthis.Parent.ChildLabelexampleLabel
たとえば、次の図では、 のqueried.SelfReferencingを指している場合、 のオブジェクトの をLevel 2返しGetSelfOrAncestor("exampleLabel")ます。IdLevel 1
public class Queried
{
public int Id { get; set; }
public SelfReferencing Referenced { get; set; }
}
public class SelfReferencing
{
public SelfReferencing Parent { get; set; }
private IList<SelfReferencing > children = new List<SelfReferencing >();
public virtual IList<SelfReferencing > Children
{
get
{
return children;
}
set
{
children = value;
}
}
public string ChildLabel { get; set; }
}
これを達成する方法についての助けをいただければ幸いです:)