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-restrictions 应用于加载的数据,但我希望将其应用于 SQL (SELECT * FROM Orders WHERE customerId='{0}' AND date > '2011-07-31'
)。
这可以通过 nHibernate 实现吗?实体框架可以做到这一点吗?
I have two simple entities with one-to-many relationship:
public class Customer
{
public int Id { get; private set; }
public IList<Order> Orders { get; private set; }
}
public class Order
{
public DateTime Date { get; set; }
}
Let's imagine, that there could be a lot of Orders for a particular Customer, and I want to see only last-month-orders.
Can I do this somehow if Orders property is lazy-loaded?
I want something like:
var orders = customer.Orders.Where(x => x.Date > DateTime.Now.AddMonths(-1)).ToList();
but now nHibernate requests all the Orders on this line (SELECT * FROM Orders WHERE customerId='{0}'
), and linq-restrictions are applied on the loaded data, but I want it to be applied to SQL (SELECT * FROM Orders WHERE customerId='{0}' AND date > '2011-07-31'
).
Is this achievable with nHibernate? Can Entity Framework do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不幸的是没有。 NHibernate 和 EF 无法处理这种情况。
Unfortunately no. NHibernate and EF cannot handle this situation.
尝试 NHibernate 3,linq 支持比第二版本好得多。否则,您可以使用条件语法发出请求。
Try NHibernate 3, linq support there is much better than in 2nd version. Otherwise you can make request using criterions syntax.