どのように私はNHibernateはのGetByCriteriaによって引き戻されて、結果セットを制限するのですか?
-
22-08-2019 - |
質問
私は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();
}
所属していません StackOverflow