非hibernate空查询

本文关键字:查询 hibernate | 更新日期: 2023-09-27 18:12:34

我有下一个代码

if (user != null)
  query = query.Where(item => item.User.Id == user.Id);
else if (equipment != null)
  query = query.Where(item => false);// TODO: Add logic for equipment

但是NHibernate不能为item => false构建表达式树。有一天这个表达式会改变,但是现在它必须返回空查询。有什么方法可以解决这个问题吗?

非hibernate空查询

假设它是一个IQueryable of User,试试这个。

if (user != null)
  query = query.Where(item => item.User.Id == user.Id);
else if (equipment != null)
  query = new List<User>().AsQueryable();
编辑:

OP说它是一个IQueryOver而不是一个iqueryable,看了看源代码和QueryOver是受保护的,所以现在不能看到如何轻松创建一个空的。我的建议是使用LINQ提供程序,如果你可以,所以我的原始答案将工作。如果这是不可能的,那么这个丑陋的黑客将工作现在。

if (user != null)
                query = query.Where(item => item.User.Id == user.Id);
            else if (equipment != null)
                query = query.Where(item => item.User.Id < 0 && item.User.Id > 1); 

我想我用过

  Where(item => 1 == 0)