2012-02-09 86 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