在 NHibernate 查询中实现条件的更好方法是什么?



我正在使用来自NHibernate的Query的泛型实现。
我的方法:

public IEnumerable<TEntidade> ObterEntidadesPor(Func<TEntidade, bool> where)
        {
            return SessionNH.Query<TEntidade>().Where(where);
        }

在这种情况下,NHibernate首先做">从TEntidade中选择*"将所有信息带到内存之后,他实现了"where">条件。这需要很多时间。

有没有更好的方法?

这个问题用Expression<func>解决了。

public IEnumerable<TEntidade> ObterEntidadesPor(Expression<Func<TEntidade, bool>> where)
{
    return SessionNH.Query<TEntidade>().Where(where);
}

在寻找答案时,一位同事告诉我,Func在构建表达式之前执行查询。要在执行查询之前构建表达式,我们必须使用 Expression .

@RomanArtiukhin在对问题的评论中也提到了这一点。

最新更新