2009-05-26 74 views
1

我想獲得一個實體及其子屬性。我怎麼能用nhibernate來做到這一點,而沒有在映射中指出。我想通過「LoadWith()」方法來控制抓取,就像我們可以在linq-to-sql中所做的那樣。不是自動化解決方案。如何在nhibernate中使用其實體屬性獲取實體?

public class Survey 
{ 
    public virtual long Id; 
    public virtual String Title; 
    public virtual IList<SurveyPage> Pages; 
} 

我想調查其頁面屬性加載,在確切的一個查詢不使用映射文件。我如何在nhibernate中做到這一點?

回答

1

已解決。這做了我想要的。

IList<Survey> surveys = session.CreateCriteria(typeof(Survey)) 
         .SetFetchMode("SurveyPages", FetchMode.Eager) 
         .List<Survey>(); 
+1

FetchMode.Eager已過時,請改爲使用FetchMode.Join。它實際上是相同的價值,但另一個名稱。 – 2009-05-26 12:20:31

0

是的,FetchMode是一個乾淨利落的工具。需要注意的事項有:

  1. 您只能將fetchmode設置爲映射文件的一個集合(一次)。

  2. 當您在關聯的集合上執行獲取模式時,它將返回行的連接(不會分隔父代的唯一行)。

這樣做的另一種方法是對Join使用HQl查詢。

相關問題