Pregunta

Tengo una Dao..lets NHibernate llaman MyClassDao a falta de un nombre mejor.

Estoy escribiendo el siguiente código.

MyClassDao myDao = new MyClassDao();

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

Estoy usando esto en una prueba unitaria para tirar los valores de la base de datos. Sin embargo, está tomando más de 30 segundos para ejecutar la prueba de que es demasiado tiempo en mi opinión ... así que lo que me gustaría hacer es limitar el conjunto de resultados que se retiró ... decir a unos 5 valores.

en SQL que haría algo como lo siguiente para lograr algo como esto

set rowcount 5
select * from whatever_table
set rowcount 0

¿Hay alguna manera ... sin necesidad de utilizar el lenguaje de consultas de NHibernate para restringir el tamaño de un conjunto de resultados?

¿Fue útil?

Solución

Uso ICriteria.SetMaxResults ()

Otros consejos

Puede utilizar el método setMaxResults en IQuery (si se utiliza HQL) o ICriteria (si utiliza criterios API).

Tengo algo como esto en mi repositorio para ayudar con los conjuntos de resultados no consolidados

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

    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top