Order
に多数の が含まれLineItems
、それぞれLineItem
に が関連付けられているオブジェクト モデルがありますProduct
。オブジェクト モデルでは、これらは一方向の関連付けであり、 aLineItem
はその について何も知りませんOrder
。
文字列に一致する製品名を持つ品目を含む注文をクエリし、注文ごとに 1 行を返します (ページングを実行できるようにするため)。
SELECT * FROM Orders
WHERE OrderID IN (
SELECT DISTINCT OrderID
FROM LineItems
INNER JOIN Products on LineItems.ProductID = Products.ProductID
WHERE Products.Name = 'foo'
)
ICriteria
サブクエリを表すまたはがある場合、IQueryOver
それをルートの Order クエリに実際に適用するにはどうすればよいでしょうか?
var subquery = QueryOver.Of<LineItem>
.Where(l => l.Product.Name == "foo")
.TransformUsing(Transformers.DistinctRootEntity);
クエリのルート オブジェクトが 1 対多の関係の「多」側にあると仮定する例をたくさん見つけましたが、ルート オブジェクトが持つものに制限を追加する方法がわかりません。の多く。