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

发布于 2024-07-10 18:46:59 字数 480 浏览 13 评论 0原文

我有一个 NHibernate Dao..让我们将其称为 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查询语言来限制结果集的大小?

I have an NHibernate Dao..lets call it MyClassDao for want of a better name.

I am writing the following code.

MyClassDao myDao = new MyClassDao();

var values = myDao.GetByCriteria(Restrictions.Eq("Status", someStatusValue));

I am using this in a Unit Test to pull back values from the database. However, it is taking over 30 seconds to run the test which is too long in my opinion...so what I'd like to do is limit the result set being pulled back...say to about 5 values.

in sql I would do something like the following to to achieve something like this

set rowcount 5
select * from whatever_table
set rowcount 0

Is there a way...without using the NHibernate Query language to restrict the size of a result set?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

任性一次 2024-07-17 18:46:59

使用 ICriteria.SetMaxResults()

Use ICriteria.SetMaxResults()

秋心╮凉 2024-07-17 18:46:59

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

You can use the SetMaxResults method on IQuery (if you use HQL) or ICriteria (if you use criteria API).

迷雾森÷林ヴ 2024-07-17 18:46:59

我的存储库中有类似的东西来帮助处理未绑定的结果集

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

    }

I have something like this in my repository to help with the unbound result sets

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

    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文