我有實體A有一個B的IList叫做Bs,而B有一個叫做Cs的C的IList。LINQ到NHibernate不能去到兒童的子女
我想搜索所有其中至少有5個C的A's。於是我就寫了
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上的映射表示:
//...
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();
你可能想嘗試在NHibernate的樹幹較新的LINQ提供程序。 NHContrib Linq提供程序具有更多有限的功能。 – 2010-01-28 12:25:30
我有NHibernate中繼的最新LINQ提供程序,它不能解決我的問題:((((( – 2010-02-03 20:11:48