B라는 IList가 Bs이고 B가 Cs라는 IList를 가지고있다.LINQ to NHibernate는 아이들의 아이들에게 접근 할 수 없다.
5 개 이상의 C가있는 A를 모두 검색하고 싶습니다. 그래서 내가 가서 그러나 코드를 실행 (및 범위 변수에 지정된 최소를 가진) 나는 다음과 같은 예외가 얻을에
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 : CS의 : 속성을 확인할 수 없습니다를
왜 A에서 B의 속성을 찾습니까?
이A의 (유창함) 매핑 말한다 :
//...
HasMany(a => a.Bs)
.Table("Bs")
.KeyColumn("IdA")
.Cascade.AllDeleteOrphan()
.Inverse()
.Not.LazyLoad();
//...
와 B에 매핑에
는 말한다 : C에 매핑에 마지막으로//...
HasMany(b => b.Cs)
.Table("Cs")
.KeyColumn("IdB")
.Cascade.AllDeleteOrphan()
.Inverse()
.Not.LazyLoad();
References(b => b.A, "IdA")
.Not.LazyLoad();
//...
매핑은 그래도 잘 될 것 같다 :
References(c => c.B, "IdB").Not.LazyLoad();
에 LINQ와 함께 할 수 없습니다. NHContrib Linq 공급자는 기능이 제한되어 있습니다. –
NHibernate 트렁크에서 최신 LINQ 공급자가 있고 내 문제가 해결되지 않습니다. (((( –