QueryOver условно имеет несколько или ноль предложений Где

Я делаю простой запрос NHibernate и хочу добавить возможное предложение "Где", которое может иметь несколько фильтров или вообще не иметь их.

Тем не менее, в зависимости от выбора пользователей может быть несколько или ничего не фильтровать, то есть возвращать все. Есть ли способ условно добавить предложение where и опустить его, когда нечего фильтровать?

Так что я в основном не уверен, как добавить несколько или ноль предложений, используя QueryOver.

Благодарю.

1 ответ

Решение

Вы можете использовать

 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)         
}
Другие вопросы по тегам