NHibernate データ アクセス用の汎用リポジトリを作成しようとしています。メソッドはGet<T>()
、オプションの述語を取得できる必要があり、クエリに含める必要があります。つまり、NHibernate は SQL で WHERE 句を生成する必要があります。
public virtual IList<T> Get(Func<T, bool> predicate = null)
{
// Open NHibernate Session
using (var session = NHibernateHelper.OpenSession())
return (predicate != null
? session.Query<T>().Where(predicate)
: session.Query<T>()).ToList();
}
述語を渡し、NH が生成する SQL ステートメントを観察すると、where 句が表示されません。
NHibernate はいつクエリを実行しますか? 電話するときは.Query<T>()
?もしそうなら、どうすればこれを達成できますか?