3

我有一个 NHibernate Dao..let 称它为 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

您可以在 IQuery(如果您使用 HQL)或 ICriteria(如果您使用标准 API)上使用 SetMaxResults 方法。

于 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 回答