【问题标题】:Mapping Formula in fluent nhibernate流畅的nhibernate中的映射公式
【发布时间】:2012-03-01 17:35:06
【问题描述】:

我有一个名为 Event 的实体:

 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);             

但系统仍然延迟加载。

有什么帮助吗?

【问题讨论】:

    标签: nhibernate mapping formula lazy-loading


    【解决方案1】:

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

    from Event fetch all properties
    

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

    【讨论】:

    • 我不确定是否能解决问题。现在我解决了它创建一个 list 然后迭代它以对每个执行选择计数。我只是想知道为什么 store.SetFetchMode("ChildrenCount",NHibernate.FetchMode.Eager);没有任何作用
    • 我认为它完全解决了您所描述的问题。 SetFetchMode 用于集合关联,而不是像 ChildrenCount 那样用于 Lazy 属性。但听起来您可以通过多种方式解决您的问题,例如使用投影代替。
    猜你喜欢
    • 1970-01-01
    • 2010-11-22
    • 2023-03-14
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    相关资源
    最近更新 更多