假设我有一个需要使用 nHibernate 呈现的 SQL 查询。SQL 查询的WHERE子句由三个OR语句组成,每个语句都包含一个条件列表。例如:
SELECT * 
FROM MyTable 
WHERE
    (OrderId = 1 and ItemId = 100) 
    OR
    (OrderId = 2 and ItemId = 200)
    OR
    (OrderId = 3 and ItemId = 300)
使用 nHibernate 的Criteria语法,我可以使用析取来实现:
var disjunction = Restrictions.Disjunction();
foreach (var tuple in OrdersAndLineItems)
{
    var conjunction = Restrictions.Conjunction();
    var order = tuple.Item1;
    var lineitem = tuple.Item2;
    conjunction.Add(Restrictions.Eq("OrderId", order.Id));
    conjunction.Add(Restrictions.Eq("LineItemId", lineitem.Id));
    disjunction.Add(conjunction);
}
var result = Session.CreateCriteria<SomeClass>().Add(disjunction).ToList();
我将如何使用 nHibernate 3.x 中的QueryOver语法编写相同类型的查询?