2

我怎样才能急切地获取一个集合,但只获取前 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

4

1 回答 1

0

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

于 2011-09-07T21:46:26.077 回答