这类似于这个问题: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 做到这一点?