【问题标题】:NHibernate query - Many-to-Many - eager loading (twitter style followers/following)NHibernate 查询 - 多对多 - 急切加载(推特风格的追随者/关注者)
【发布时间】:2010-07-20 03:15:13
【问题描述】:

我一直在优化我的一个查询...这是我的场景...

我有一个类似于 Twitter 的域,用户可以在其中关注其他用户。所以这是我的用户模型的示例:

User
 -> Followers (many-to-many users)
 -> Following (many-to-many users)

我现在需要返回关注用户“XYZ”的用户的分页结果,但还需要急切加载数据以确定当前登录的用户是否关注返回的关注者。

所以不知何故,我需要急切地加载这个:user->followers->following(可能使用过滤器来获取当前用户的 following 数据)

这甚至可以在 1 个查询中完成,还是我需要执行 2 个单独的查询? 1 个查询返回关注者的分页数据,然后另一个查询指定带有返回 ID 的 IN 子句以获取登录用户的以下数据。

保罗

【问题讨论】:

    标签: nhibernate many-to-many eager-loading


    【解决方案1】:

    您需要两个查询来获取数据,但您可以使用 NHibernate Futures 方法一次执行两个查询。

    在你的场景中,你会做类似的事情

    var user = Session.CreateCriteria<User>()
                        .SetFetchMode("Followers", FethMode.Eager)
                        .Add(Restrictions.Eq("Id", userId)
                        .FutureValue<User>();
    
    Session.CreateCriteria<User>()
                        .SetFetchMode("Following", FethMode.Eager)
                        .Add(Restrictions.Eq("Id", userId)
                        .FutureValue<User>();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-03
      • 2018-11-16
      • 2017-12-08
      • 2016-06-22
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      相关资源
      最近更新 更多