nHibernate 中具有限制的延迟加载集合

发布于 2024-12-02 08:50:29 字数 721 浏览 4 评论 0原文

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

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

陈独秀 2024-12-09 08:50:29

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

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

Is this achievable with nHibernate? Can Entity Framework do this?

Unfortunately no. NHibernate and EF cannot handle this situation.

听风吹 2024-12-09 08:50:29

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

Try NHibernate 3, linq support there is much better than in 2nd version. Otherwise you can make request using criterions syntax.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文