nHibernateを使用してレンダリングする必要のあるSQLクエリがあるとします。SQLクエリのWHERE句は、3つのORステートメントで構成され、各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構文を使用して同じタイプのクエリを作成するにはどうすればよいですか?