我有一个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 Query语言来限制结果集的大小?
答案 0 :(得分:12)
使用ICriteria.SetMaxResults()
答案 1 :(得分:2)
您可以在IQuery(如果使用HQL)或ICriteria(如果使用条件API)上使用SetMaxResults方法。
答案 2 :(得分: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();
}