Как я могу фильтровать коллекции с помощью критериев NHibernate?

Я понимаю, что вы можете использовать фильтры в NHibernate только для загрузки частей дочерних коллекций. Я хотел бы иметь возможность делать это с помощью Criteria API вместо HQL. Это возможно?

Некоторые особенности моего приложения: я пытаюсь загрузить счета-фактуры для данного поставщика, которые появляются после указанной даты и имеют положительные позиции.

Сущности выглядят примерно так:

public partial class Vendor
{
   public virtual string Name {get; set;}
   //A bunch of other properties 
   public virtual ICollection<Invoice> Invoices {get; protected set;}
}

public partial class Invoice
{
   public virtual DateTime? Date {get; set;}
   public virtual ICollection<LineItem> LineItems {get; protected set;}
}

public partial class LineItem
{
   public virtual decimal Amount {get; set;}
}

Первоначально я просто выбирал позиции, но теперь они хотят, чтобы пользователь мог ввести набор критериев для выбора поставщика. У меня уже есть пользовательский интерфейс / код, позволяющий пользователю указывать поставщиков с помощью API критериев, поэтому я хотел бы применить фильтр, чтобы извлекать только те элементы LineItem, которые являются положительными для счетов-фактур, которые происходят после заданной даты. Возможно ли это с помощью API критериев? Если нет, могу ли я хотя бы обойтись без добавления фильтров в свой файл сопоставления?


person Neil    schedule 03.05.2011    source источник


Ответы (1)


Обновил ответ, плохо прочитал его в первый раз ... Я не знаю, поможет ли это, но я столкнулся с той же проблемой, когда мне нужно было вытащить только активные элементы из дочерней коллекции. Здесь используется запрос, но это оболочка поверх критериев, поэтому это можно сделать ... Вот оно ...

person gt124    schedule 03.05.2011
comment
Спасибо, но я не это ищу. Это приведет к поиску списка поставщиков, но я хочу получить только те детали счета, которые соответствуют заданным критериям. - person Neil; 04.05.2011