2011-03-31 104 views
1

問題:問題查詢到的對象的層次結構與NHibernate

我有對象層次A => B => C - 這是A引用BB引用CC包含我試圖查詢的Name屬性。我想打電話給下面的代碼獲取我收到錯誤的A's

ICriteria criteria = session.CreateCriteria(typeof (A)).Add(Restrictions.Eq("B.C.Name", "Test")); 
return criteria.List<A>(); 

列表中的「無法解析屬性:B.C.Name的:A」。我的所有映射都很好看,其中B包含C屬性,C包含Name屬性。我也驗證映射是正確的,因爲我正在運行成功檢索請求的數據的其他查詢。

基本上,我試圖讓所有A's匹配C中的名稱。那麼如何編寫一個可以做到這一點的查詢呢?

感謝,

凱爾

回答

2

使用QueryOver:

session.QueryOver<A>() 
    .JoinQueryOver(a => a.B) 
    .JoinQueryOver(b => b.C) 
    .Where(c => c.Name == "Test") 
    .List<A>(); 

你也可以用別名做。

+0

非常感謝 - 做到了。我還在http://nhforge.org/blogs/nhibernate/archive/2009/12/17/queryover-in-nh-3-0.aspx上的QueryOver API中找到了一篇很好的文章。有時你只需要知道什麼東西被稱爲開始在正確的方向。 – 2011-03-31 23:15:37

+0

是啊,這幾乎是QueryOver的最佳信息:) – psousa 2011-03-31 23:22:09