Как я могу отфильтровать коллекции с помощью NHibernate Criteria? - PullRequest
0 голосов
/ 04 мая 2011

Я понимаю, что вы можете использовать фильтры в 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 Criteria, поэтому я хотел бы применить фильтр, чтобы получать только те элементы LineItems, которые являются положительными для счетов-фактур, которые происходят после определенной даты.Возможно ли это с помощью Criteria API?Если нет, могу ли я хотя бы уйти, не добавив def-def в свой файл сопоставления?

1 Ответ

0 голосов
/ 04 мая 2011

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

...