【发布时间】:2012-08-08 14:17:00
【问题描述】:
这类似于这个问题:NHibernate - Implement "NOT IN" query using ICriteria
但这不适用于我的解决方案。
我有一个订单:
class Order
{
DateTime CreatedDate { get; set;}
Person CreatedBy { get; set; }
}
还有一个人:
class Person
{
string Name { get; set;} // etc.
}
我想检索所有在某个日期范围内没有订单的人。 SQL 最终会是这样的:
SELECT *
FROM Person
WHERE Id NOT IN (SELECT PersonId
FROM Order
WHERE CreatedDate BETWEEN '2012-01-01' and '2012-01-31')
当我使用上述问题中提供的解决方案进行查询时,如果有 2100 人或更多,则它会失败(SQL 不会允许那么多参数)。
此外,我无法向人员添加 Orders 集合,因为这会涉及方式提取太多数据(我只想要一个日期范围)。
如何使用 NHibernate 做到这一点?
【问题讨论】:
-
我可以使用 HQL,但查询更易于维护。据我了解,SQL 不会让您轻松地将查询映射到具有 NHibernate 的实体。
标签: c# nhibernate icriteria