我正在尝试为我的 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>()
吗?如果是这样,我怎样才能做到这一点?