Я изо всех сил пытаюсь реплицировать простое соединение sql left в запросе nHibernate.Другие ответы на SO привели меня в замешательство в отношении того, как лучше всего обрабатывать левые объединения в запросе домена.
Пример:
2 Таблицы БД:
Customer
CustId INT PK
Orders
OrderId INT PK
CustId INT FK
Status INT
1 SQL-запрос:
Select c.CustId from Customer c
left join Orders o on o.CustId = c.CustId and o.Status = 2
where o.OrderId is null
Это позволит получить уникальный список клиентов, у которых нет заказа в статусе 2. Обратите внимание, что в него также входят клиенты, у которых нет заказа навсе.Это надуманный пример для упрощения этого вопроса, но этот тип запроса очень полезен и его нелегко сделать любым другим способом.
Представьте nh сопоставления для "Customer" и "Orders", которые просто отражают таблицы примероввыше.
Существует ли простой способ извлечения моего списка уникальных клиентов, не имеющих статуса 2, в nHibernate, в запросе, без обращения к SQL-запросу или в конечном итоге в сценарии выбора n + 1?
Параметры запроса:
1 linq-to-nhibernate
2 QueryOver
3 HQL
4 Критерии.
Спасибо.