在NHibernate查询中实现条件的更好方法是什么?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在NHibernate查询中实现条件的更好方法是什么?相关的知识,希望对你有一定的参考价值。
我正在使用来自NHibernate的Query的泛型实现。 我的方法:
public IEnumerable<TEntidade> ObterEntidadesPor(Func<TEntidade, bool> where) { return SessionNH.Query<TEntidade>().Where(where); }
在这种情况下,NHibernate首先做“select * from TEntidade”将所有信息带到内存之后,他实现了“where”条件。这花费了很多时间。
有没有更好的方法呢?
答案
Expression<func>
解决了这个问题。
public IEnumerable<TEntidade> ObterEntidadesPor(Expression<Func<TEntidade, bool>> where)
{
return SessionNH.Query<TEntidade>().Where(where);
}
在搜索答案时,一位同事告诉我,Func
在构建表达式之前执行查询。要在执行查询之前构建表达式,我们必须使用Expression
。
@RomanArtiukhin在对问题的评论中也提到了这一点。
以上是关于在NHibernate查询中实现条件的更好方法是什么?的主要内容,如果未能解决你的问题,请参考以下文章