我只是想编写一个看起来像这样并渴望加载的查询:
Select * from Users where Id IN (1,2,3)
Select * from Bids where UserId in (1,2,3)
现在它正在引起问题,因为联接返回了太多结果。
我只是想编写一个看起来像这样并渴望加载的查询:
Select * from Users where Id IN (1,2,3)
Select * from Bids where UserId in (1,2,3)
现在它正在引起问题,因为联接返回了太多结果。
尝试使用多标准(或本例中的 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>();