延迟加载集合,在nHibernate中有限制

时间:2011-08-31 04:58:08

标签: c# nhibernate linq-to-nhibernate

我有两个具有一对多关系的简单实体:

public class Customer
{
    public int Id { get; private set; }
    public IList<Order> Orders { get; private set; }
}

public class Order
{
    public DateTime Date { get; set; }
}

让我们想象一下,特定客户可能会有很多订单,而且我只希望看到最后一个月的订单。

如果Orders属性是延迟加载的,我能以某种方式执行此操作吗? 我想要这样的东西:

var orders = customer.Orders.Where(x => x.Date > DateTime.Now.AddMonths(-1)).ToList();

但现在nHibernate请求此行上的所有订单(SELECT * FROM Orders WHERE customerId='{0}'),并且对加载的数据应用linq限制,但我希望它应用于SQL(SELECT * FROM Orders WHERE customerId='{0}' AND date > '2011-07-31')。 / p>

这可以通过nHibernate实现吗?实体框架能做到吗?

2 个答案:

答案 0 :(得分:1)

尝试NHibernate 3,linq支持比第二版好得多。否则,您可以使用标准语法提出请求。

答案 1 :(得分:1)

  

这可以通过nHibernate实现吗?实体框架能做到吗?

不幸的是没有。 NHibernate和EF无法处理这种情况。