fluent-nhibernate中的映射公式

fluent-nhibernate中的映射公式,nhibernate,mapping,formula,lazy-loading,Nhibernate,Mapping,Formula,Lazy Loading,Im有一个名为事件的实体: 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("(Se

Im有一个名为事件的实体:

 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设置为Eager

   store.SetFetchMode("ChildrenCount",NHibernate.FetchMode.Eager);             
但这个系统仍然懒散

有什么帮助吗?

您可以在HQL中使用“获取所有属性”提示:

from Event fetch all properties

这将加载您所有的惰性属性。

我不确定这是否解决了问题。到现在为止,我解决了这个问题,创建了一个列表,然后遍历它,对每个列表执行选择计数。我只是想知道为什么store.SetFetchMode(“ChildrenCount”,NHibernate.FetchMode.Eager);没有任何效果,我想它正好解决了你所描述的问题。SetFetchMode用于集合关联,而不是像ChildrenCount那样用于惰性属性。但是听起来你可以用很多方法来解决你的问题,比如用投影代替。