3

私はNHibernate Daoを持っています..より良い名前が欲しいので、それを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 クエリ言語を使用せずに...方法はありますか?

4

3 に答える 3

12

ICriteria.SetMaxResults() を使用する

于 2008-12-19T11:57:21.420 に答える
2

SetMaxResults メソッドは、IQuery (HQL を使用する場合) または ICriteria (基準 API を使用する場合) で使用できます。

于 2008-12-19T11:57:48.000 に答える
0

バインドされていない結果セットを支援するために、リポジトリにこのようなものがあります

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

    }
于 2012-02-21T04:37:14.623 に答える