限制了一个热切的收藏品

时间:2010-08-12 20:07:42

标签: nhibernate eager-loading

我如何急切地获取一个集合,但只是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的结果。

1 个答案:

答案 0 :(得分:0)

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