2010-11-09 1 views
1

Мне нужно написать запрос NHibernate, который поместит ограничение, которое обращается к детям в отношениях друг к другу.Как написать запрос NHibenerate, который запрашивает детей?

Например, у меня есть объект-клиент, у которого есть свойство, которое представляет собой список адресов. Мне нужно найти всех клиентов, у которых есть адрес в данном городе.

Кроме того, я пишу этот запрос таким образом, что я также буду добавлять другие ограничения для самого клиента, такие как статус, имя и т. Д. Таким образом, я не могу написать запрос исключительно с точки зрения адреса ,

Любые идеи о том, как это сделать?

ответ

1

Вы можете использовать критерии API, с «вложенной» Критерии на свойстве АДРЕСА вашего объекта Заказчика:

var result = session 
    .CreateCriteria(typeof(Customer)) 
     .CreateCriteria("Adresses") 
     .Add(Restriction.Eq("City", "NY")) 
    .ToList<Customer>(); 

Если вам необходимо запросить по имени, вы можете идти, как это:

var customerCriteria = session 
    .CreateCriteria(typeof(Customer)); 

customerCriteria.Add(Restrictions.Like("Name", "John", MatchMode.Exact)); 

customerCriteria.CreateCriteria("Adresses") 
    .Add(Restriction.Eq("City", "NY")); 

var result = customerCriteria.ToList<Customer>(); 
+0

Красивая! Благодаря! –

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