どのように私はNHibernateはのGetByCriteriaによって引き戻されて、結果セットを制限するのですか?

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

質問

私は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のクエリ言語を使用せずに?

役に立ちましたか?

解決

利用ICriteria.SetMaxResults()

他のヒント

(あなたが基準のAPIを使用している場合)

あなたは(あなたがHQLを使用している場合)IQUERYにはsetMaxResultsメソッドを使用するか、ICriteriaことができます。

私は未結合の結果セットを助けるために私のリポジトリにこのようなものを持っている。

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

    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top