2012-02-09 85 views
4

林已經被稱爲實體事件:映射公式

public virtual int ID { get;set;} 
public virtual string Name { get;set;} 
public virtual Event Master { get;set;} 
public virtual int ChildrenCount { get;set;} 

的Childrencount映射:

Map(x => x.ChildrenCount).LazyLoad().Formula("(Select count(*) from Events Where Events.Master_id=Event_id)"); 

有時我想ChildrenCount現在的價值,我設置Fetchmode躍躍欲試

store.SetFetchMode("ChildrenCount",NHibernate.FetchMode.Eager);    

但是系統仍然延遲加載。

任何幫助?

回答

0

您可以使用HQL的「獲取所有屬性」提示:

from Event fetch all properties 

這將加載所有的懶惰性。

+0

林不知道解決了這個問題。現在我解決了它創建一個列表然後遍歷它執行每個選擇計數。我只想知道爲什麼store.SetFetchMode(「ChildrenCount」,NHibernate.FetchMode.Eager);沒有任何效果 – 2012-02-09 12:14:52

+0

我認爲它解決了你正在描述的問題。 SetFetchMode用於收集關聯,而不是您的ChildrenCount所用的Lazy屬性。但聽起來像你可以用很多方式解決你的問題,例如通過使用Projection來代替。 – jakobandersen 2012-02-09 15:08:12