Nhibernate - 分页和急切加载实体

Posted

技术标签:

【中文标题】Nhibernate - 分页和急切加载实体【英文标题】:Nhibernate - Paging and eager loading entities 【发布时间】:2011-04-02 06:26:08 【问题描述】:

我有两个实体,一个团队和一个员工。

我想获得一份拥有热心加载团队的员工列表。列表必须分页。

public PagedList<Employee> GetAllEmployeesWithEagerLoadedTeams(int page, int pageSize)

    var criteria = GetSession()
        .CreateCriteria(typeof (Employee))
        .SetFetchMode(DomainModelHelper.GetAssociationEntityNameAsPlural(typeof (Team)),FetchMode.Eager);

    var totalCount = criteria
        .SetProjection(Projections.RowCount())
        .FutureValue<Int32>().Value;

    return criteria
        .SetFirstResult(page * pageSize)
        .SetMaxResults(pageSize)
        .Future<Employee>()
        .ToPagedList(page, pageSize, totalCount);

为什么这不起作用?

SQL 结果:

SELECT count(*) as y0_ FROM [Employee] this_;

SELECT TOP 10 y0_ FROM (SELECT count(*) as y0_, 
    ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) as __hibernate_sort_row FROM [Employee] this_) as query WHERE query.__hibernate_sort_row > 10 ORDER BY query.__hibernate_sort_row;

【问题讨论】:

【参考方案1】:

您正在尝试重用已指定计数投影和未来值的条件变量。 您需要为第二个查询创建一个新条件。

【讨论】:

以上是关于Nhibernate - 分页和急切加载实体的主要内容,如果未能解决你的问题,请参考以下文章

Nhibernate:只读属性导致急切加载

控制 NHibernate 实体 Eagerloading

在 NHibernate 3.0 Linq 中急切加载多个兄弟姐妹和孙辈(堂兄弟?)的良好行为

通过 NHibernate 检索/保存链接到其他实体的日志条目的最佳方法是啥?

分页和实体框架

laravel hydraRaw/fromQuery 和分页急切加载