如何创建使用FetchMode.Select的Fluent NHibernate查询

时间:2012-05-23 18:07:11

标签: nhibernate fluent-nhibernate

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

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

现在它导致了问题,因为连接返回了太多结果。

1 个答案:

答案 0 :(得分:0)

尝试使用multicriteria(或本示例中的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>();

唯一的问题是它会加入竞价 - &gt;用户,以避免您可以使用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>();