我试图Queried
从数据库中检索所有类型的实体,其中Referenced
属性或其祖先的标签(意思是referenced.Parent.ChildLabel)等于某个给定的标签值exampleLabel
,Id
等于exampleId
。
我尝试使用:
var result = nhibernateSession
.Query<Queried>()
.Where(queried => queried.SelfReferencing.GetSelfOrAncestor("exampleLabel") == exampleId)
.ToList();
但它会抛出“System.NotSupportedException”,可能是因为它不知道如何将其转换GetSelfOrAncestor
为 SQL。
该方法GetSelfOrAncestor(string label)
返回调用它的实例或其祖先满足等于 的条件Id
,否则返回 0。SelfReferencing
this.Parent.ChildLabel
exampleLabel
例如,在下图中,如果queried.SelfReferencing
指向 at的对象Level 2
,则GetSelfOrAncestor("exampleLabel")
返回Id
对象的 at Level 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; }
}
任何有关如何实现这一目标的帮助将不胜感激:)