0

我正在做一个基本的 NHibernate 查询,并想添加一个可能的“Where”子句,它可能有多个过滤器或根本没有过滤器。

但是,根据用户的选择,可能有几个或没有要过滤的内容,即全部返回。有没有办法有条件地添加 where 子句并在没有任何过滤条件时省略它?

所以我基本上不确定如何使用 QueryOver 添加几个或零个 where 子句。

谢谢。

4

1 回答 1

2

您可以利用

 Restrictions.Conjunction()

举个例子:

private IQueryOver<CustomerEntity> QueryForCustomer(int? companyCode, int[] zipCodes)
{        
    var customerRestritcions = Restrictions.Conjunction();
    if (companyCode.HasValue)
    {
        customerRestritcions.Add(Restrictions.Eq(Projections.Property<CustomerEntity>(c => c.CompanyCodeId), companyCode));
    }

    if (zipCodes != null)
    {
        customerRestritcions.Add(Restrictions.In(Projections.Property<CustomerEntity>(c => c.ZipCode), zipCodes));
    }

    return Session.QueryOver<CustomerEntity>(() => customer)
        .Where(customerRestriction)         
}
于 2013-10-25T15:37:50.297 回答