Какой лучший способ реализовать условие в запросе NHibernate? - PullRequest
1 голос
/ 27 марта 2019

Я использую обобщенную реализацию Query из NHibernate.
Мой метод:

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

В этом случае NHibernate сначала выполняет "select * from TEntidade" , после чего всю информацию помещает в память, после чего он реализует условное выражение "where" . Это занимает много времени.

Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 27 марта 2019

Проблема была решена с помощью Expression<func>.

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

При поиске ответа коллега сказал мне, что Func выполняет запрос перед построением выражения. Чтобы построить выражение перед выполнением запроса, мы должны использовать Expression.

Это также упоминается @RomanArtiukhin в комментариях к вопросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...