0

我只是想编写一个看起来像这样并渴望加载的查询:

Select * from Users where Id IN (1,2,3)
Select * from Bids where UserId in (1,2,3)

现在它正在引起问题,因为联接返回了太多结果。

4

1 回答 1

0

尝试使用多标准(或本例中的 Future),应该在 1 个批次中发出 2 个查询并为您提供急切加载:

        var bids = Session.QueryOver<Bid>()
            .JoinQueryOver(b => b.User)
            .WhereRestrictionOn(u => u.Id).IsIn(ids)
            .Future<Bid>();
        var users = Session.QueryOver<User>()
            .WhereRestrictionOn(u => u.Id).IsIn(ids)
            .List<User>();

唯一的问题是它将加入 Bid -> User,以避免您可以使用 HQL:

        var bids = Session.CreateQuery("from Bid b where b.User.id in (:userIds)")
            .SetParameterList("userIds", ids)
            .Future<Bid>();
        var users = Session.QueryOver<User>()
            .WhereRestrictionOn(u => u.Id).IsIn(ids)
            .List<User>();
于 2012-05-23T20:11:49.267 回答