限制急切获取的集合

发布于 2024-09-14 10:54:26 字数 567 浏览 5 评论 0原文

我怎样才能急切地获取一个集合,但只获取前 N 个项目?

使用此代码是可行的,但是有没有“官方方法”来实现这一点?

public Gallery GetById(int id)
{
    var session = GetSession();

    var criteria = session.CreateCriteria<Gallery>()
        .Add(Expression.Eq("Id", id))

        .SetFetchMode("Pictures", FetchMode.Eager)         
        .CreateAlias("Pictures", "p")

        .SetFirstResult(0)
        .SetMaxResults(24)
        ;

    return criteria.UniqueResult<Gallery>();
}

在本例中,我限制了 Gallery 的结果,这无论如何都是唯一的结果,但我想限制 Pictures 的结果。

How can I eagerly fetch a collection, but just the N first items?

Using this code works, but is there an 'official way' to achieve that?

public Gallery GetById(int id)
{
    var session = GetSession();

    var criteria = session.CreateCriteria<Gallery>()
        .Add(Expression.Eq("Id", id))

        .SetFetchMode("Pictures", FetchMode.Eager)         
        .CreateAlias("Pictures", "p")

        .SetFirstResult(0)
        .SetMaxResults(24)
        ;

    return criteria.UniqueResult<Gallery>();
}

In this case, I'm bounding the results of Gallery, which is anyway unique result, but I want to bound the results of Pictures.

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

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

发布评论

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

评论(1

最丧也最甜 2024-09-21 10:54:26

您的代码工作正常,并且完全可以接受。如果您想要始终急切地获取,您可以在表映射配置中进行设置(HBM、Fluent 或您使用的任何解决方案),然后明确告诉它不要在以下情况下这样做:你不想急切地去取。两种方式都可以正常工作并且可以接受。对于您的项目需求和团队的编码风格,请使用更方便或更安全的方式。

Your code works correctly, and is perfectly acceptable. If you want to always eagerly fetch, you can set it as such in your table mapping configuration (HBM, Fluent, or with whatever solution you use), and then explicitly tell it not to for the cases where you don't want to eagerly fetch. Both ways work fine and are acceptable. Use whichever is more convenient or safe for your project needs and team's coding style.

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