Where … In … Or Where … In … with NHibernate IQuer

2020-07-09 07:58发布

问题:

I'm trying to emulate subject query with NHibernate's IQueryOver. So far I have

var q = CurrentSession.QueryOver<ObjectModel.Order>().
    WhereRestrictionOn(o => o.Buyer.ID).IsIn(partyIDs).
    WhereRestrictionOn(o => o.Seller.ID).IsIn(partyIDs);

This, however, generates an and query, whereas I need to have an or operator between two where clauses.

How is this done with IQueryOver?

回答1:

As it usually is, found question soon after explaining the problem to general public. Thanks, guys!

var q = CurrentSession.QueryOver<ObjectModel.Order>();

q.RootCriteria.Add(Restrictions.Or(
    Restrictions.On<ObjectModel.Order>(o => o.Buyer.ID).IsIn(partyIDs),
    Restrictions.On<ObjectModel.Order>(o => o.Seller.ID).IsIn(partyIDs)));