我有具有B的一个IList称为烧烤和B具有C的IList中称为Cs的实体A。
我想搜索所有A的具有至少5℃的在其中。 于是我就写了
using (var s = this._sessionFactory.OpenSession())
{
IQueryable<A> q = s.Linq<A>();
// some code...
if (range.Min.HasValue)
q = q.Where(a => a.Bs.Sum(b => b.Cs.Count) >= range.Min.Value);
// some code...
return q.Select(b=>b).ToArray();
}
然而在执行代码(和具有最小值的范围内变量指定),得到类似如下异常:
NHibernate.QueryException:无法解析属性:答:铯
为什么它看起来为B的一个属性? 该映射似乎是正确的,但:
A上的(流利)映射说:
//...
HasMany(a => a.Bs)
.Table("Bs")
.KeyColumn("IdA")
.Cascade.AllDeleteOrphan()
.Inverse()
.Not.LazyLoad();
//...
和B上的映射说:
//...
HasMany(b => b.Cs)
.Table("Cs")
.KeyColumn("IdB")
.Cascade.AllDeleteOrphan()
.Inverse()
.Not.LazyLoad();
References(b => b.A, "IdA")
.Not.LazyLoad();
//...
最后在C上的映射:
References(c => c.B, "IdB").Not.LazyLoad();