如何限制NHibernate的GetByCriteria撤回的结果集?

时间:2008-12-19 11:49:31

标签: c# nhibernate criteria resultset restriction

我有一个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语言来限制结果集的大小?

3 个答案:

答案 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();

    }