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 に答える