Comment puis-je limiter le jeu de résultats étant tiré vers l'arrière par GetByCriteria NHibernate?

StackOverflow https://stackoverflow.com/questions/380775

Question

J'ai un Dao..lets NHibernate appellent MyClassDao faute d'un meilleur nom.

Je suis en train d'écrire le code suivant.

MyClassDao myDao = new MyClassDao();

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

J'utilise cela dans un test unitaire pour retirer les valeurs de la base de données. Cependant, il prend plus de 30 secondes pour exécuter le test qui est trop long à mon avis ... donc ce que je voudrais faire est de limiter le jeu de résultats étant tiré vers l'arrière ... dire à environ 5 valeurs.

sql je ferais quelque chose comme ce qui suit pour réaliser quelque chose comme ceci

set rowcount 5
select * from whatever_table
set rowcount 0

Est-il possible ... sans utiliser la langue NHibernate requête pour limiter la taille d'un jeu de résultats?

Était-ce utile?

La solution

Utilisation ICriteria.SetMaxResults ()

Autres conseils

Vous pouvez utiliser la méthode setMaxResults sur IQuery (si vous utilisez HQL) ou ICriteria (si vous utilisez l'API critères).

J'ai quelque chose comme ça dans mon dépôt pour aider avec les jeux de résultats non consolidés

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

    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top