2013-05-08 2 views
0

Кода: nhibernate criteria for selecting from different tablesNhibernate добавить фильтр для запроса

Основываясь на этот вопрос, я хочу, чтобы фильтровать эти извлекаемые последние 5 заказов на примере Unit.Amount == 5! (добавить фильтр). Я думаю, что это возможно с примерно чем-то вроде этого:

var query = m_hibernateSession.QueryOver<Model.Order>() 
// .Where(x => x.Units[].Amount == 5) ... // which Unit to select in this list? 
.OrderBy(x => x.PONumber).Desc.Take(5); 

Может кто-нибудь помочь мне найти правильный запрос?

Thx

ответ

1

Использование объединения должно решить вашу проблему

Order orderAlias = null; 
Unit unitsAlias = null; 
var query = session.QueryOver<Order>(() => orderAlias) 
    .JoinAlias(() => orderAlias.Units,() => unitsAlias, JoinType.InnerJoin) 
    .Where(() => unitsAlias.Amount == 5) 
    .OrderBy(x => x.PONumber).Desc.Take(5); 
+0

И если я хочу единицы не затронутые заказы? Thx – leon22

+0

Вы можете просто создать QeryOver () и извлечь то, что вам нужно – Iridio

+0

я пробовал: Var запрос = m_hibernateSession.QueryOver (() => unitsAlias) .JoinAlias ​​(() => unitsAlias.OrderRef,() = > orderAlias, JoinType.InnerJoin) .Where (() => unitsAlias.Amount == 5) .OrderBy (x => x.PONumber) .Desc.Take (amount); Но появилось сообщение об ошибке: «Не удалось разрешить свойство: PONumber of: DCGOrderSystem.Model.Unit» – leon22

Смежные вопросы