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)
}