如何使用NHibernate Criteria过滤集合?

时间:2011-05-03 22:36:35

标签: nhibernate criteria-api

据我所知,您可以在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;}
}

最初,我只是提取订单项,但现在他们希望用户能够输入一系列标准来选择供应商。我已经拥有允许用户使用Criteria API指定供应商的UI /代码,因此我想应用过滤器来仅提取在给定日期之后发生的对发票有利的LineItem。这是否可以使用Criteria API?如果没有,我可以至少逃脱而不将filter-defs添加到我的映射文件中吗?

1 个答案:

答案 0 :(得分:0)

更新了答案,第一次没有读好...我不知道这是否会有所帮助,但我遇到了同样的问题,我只想要激活一个子集合。这使用了查询,但它是一个基于标准的包装器,所以它可以完成... Here it is...