2

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

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

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

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

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

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

保罗

4

1 回答 1

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>();
于 2011-05-19T22:23:06.107 回答