Frage

Ich habe ein NHibernate Dao..lets nennt es aus Mangel an einem besseren Namen MyClassDao.

Ich schreibe den folgenden Code ein.

MyClassDao myDao = new MyClassDao();

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

Ich verwende diese in einer Einheit Testwert aus der Datenbank zurück zu ziehen. Aber es nimmt mehr als 30 Sekunden, um den Test durchzuführen, die meiner Meinung nach zu lang ist ... so was Ich mag würde zu tun ist, begrenzen die Folge gezogen gesetzt wird wieder ... sagen bis etwa 5 Werte.

in SQL Ich möchte etwas tun, die folgende, etwas zu erreichen

set rowcount 5
select * from whatever_table
set rowcount 0

Gibt es eine Möglichkeit ..., ohne die NHibernate Abfragesprache mit der Größe einer Ergebnismenge zu beschränken?

War es hilfreich?

Lösung

Mit ICriteria.SetMaxResults ()

Andere Tipps

Sie können die setMaxResults Methode auf IQuery verwenden (wenn Sie HQL) oder ICriteria (wenn Sie Kriterien API).

Ich habe so etwas in meinem Repository mit den ungebundenen Ergebnismengen

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

    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top