2016-10-08 5 views
0

QueryOverでwhere句をオプションで追加するにはどうすればよいですか?NhibernateとQueryOverでオプションのwhereパラメータを追加する

TL; DR

私は、アプリケーションのための検索フォームを実装し、QueryOverを使用しようとしています。
検索パラメータの一部はオプションです。

  var query = 
      myDatabase.QueryOver(() => customerAlias) 
       .JoinAlias(() => customerAlias.Projects,() => projectAlias) 
       .Where(() => projectAlias.IsClosed >= 1) 
       ... possibly add more stuff 

答えて

3

通常のLinq文のように実行が延期されます。これは、.List<T>()のようなファイナライズ方法を呼び出すことによって強制的に実行されるときにのみ実行されます。

このようにしてもインラインエイリアスにアクセスできるはずです。

+0

しかし、条件が2つの場合はどうなりますか? 'query = query.AddWhere(...)'? – LosManos

+1

'query.Where(condition1).Where(condition2)'対 'query.Where(condition1 && condition2)'はもちろん、通常のLINQではありますが、Nhibernateは同じものを生成すると思われますこれらの両方からのSQLクエリ。しかし、あなたもこれを行うことができます:http://stackoverflow.com/questions/22944722/what-is-the-best-way-to-dynamically-add-to-a-where-clause-in-a-nhibernate-query #22948137インラインエイリアスは取得できませんが。 – starlight54

+0

私のオリジナルのコメント(つまり私)を理解できなかった人には、私のコメントは 'query.Where(...); query.Where(...)'という2番目の 'Where'コールは、最初の1つですが、代わりに連結されています。回答は正しいです。 – LosManos

関連する問題