У меня есть две сущности: клиент и заказ, которые существуют самостоятельно и не имеют отношений, определенных в файле сопоставления.
Теперь я хочу, чтобы nhibernate выдал мне результат следующего запроса:
select customer.id,customer.name from customer,order
where customer.id = order.id
and order.status = "Open"
Я пытался использовать проекцию, но при проверке выходных данных sql я вижу, что Nhibernate создает подзапрос, который не является моим намерением (и менее производительным?)
public IList<Customer> GetOpenOrders()
{
DetachedCriteria orders = DetachedCriteria.For<Order>("orders")
.SetProjection(Projections.Property("orders.id"));
ICriteria cret = session.CreateCriteria(typeof(Customer))
.Add(Subqueries.PropertyIn("id", orders))
.Add(Expression.Eq("Status", "open"));
return cret.List<Customer>();
}
Можно ли сделать это с помощью критериев или есть лучший способ выполнить такого рода запросы?