Как ограничить результирующий набор, который возвращает GetByCriteria NHibernate? - PullRequest
3 голосов
/ 19 декабря 2008

У меня есть NHibernate Dao..lets называют его MyClassDao из-за отсутствия лучшего имени.

Я пишу следующий код.

MyClassDao myDao = new MyClassDao();

var values = myDao.GetByCriteria(Restrictions.Eq("Status", someStatusValue));

Я использую это в модульном тесте для получения значений из базы данных. Однако выполнение теста занимает более 30 секунд, что, на мой взгляд, слишком долго ... поэтому я хотел бы ограничить возврат набора результатов ... скажем, примерно 5 значениями.

в sql Я бы сделал что-то вроде следующего, чтобы добиться чего-то подобного

set rowcount 5
select * from whatever_table
set rowcount 0

Есть ли способ ... без использования языка запросов NHibernate для ограничения размера набора результатов?

Ответы [ 3 ]

12 голосов
/ 19 декабря 2008

Использовать ICriteria.SetMaxResults ()

2 голосов
/ 19 декабря 2008

Вы можете использовать метод SetMaxResults в IQuery (если вы используете HQL) или ICriteria (если вы используете API критериев).

0 голосов
/ 21 февраля 2012

У меня есть что-то вроде этого в моем хранилище, чтобы помочь с несвязанными наборами результатов

public IQueryable<T> SelectWithLimit<T>(int maxResults) where T : class
    {
        ICriteria criteria = SessionWrapper.Session.CreateCriteria(typeof (T)).SetMaxResults(maxResults);
        return criteria.List<T>().AsQueryable();

    }
...