Nhibernate通过懒惰的装载袋命令寻呼
本文关键字:命令 Nhibernate | 更新日期: 2023-09-27 18:35:34
我有以下映射:
<class name="Entity, Namespace.MyDomain" table="Entity" lazy="false" mutable="false" >
<id name="EntityId" column="ENTITY_ID"> <generator class="native"/> </id>
<bag name="EntityList" inverse="true" lazy="true" cascade="all-delete-orphan">
<key column="ENTITY_ID"/>
<one-to-many class="Namespace.Entity.EntityList, Namespace.MyDomain"/>
</bag>
现在,我想通过我的 EntityList.Name 获得有序的分页。
例如,如果我有 2 个实体:1) 实体与实体动物名称列表(老虎)2) 实体与实体动物名称列表(猫、狗)然后,我想先得到第二个实体(因为猫的"c"比老虎的"t"低),然后是第一个实体。
当然,这会影响我的分页,因为如果我通过 entity.id 获得分页,则带有 tiger 的实体可能会显示在第一页上,但是当我通过 entitylist.names 获得分页时,它可能会显示在其他页面上。
提前感谢,话筒。
附言 - 我正在使用标准。
var entityIds = session.CreateCriteria<Entity>()
.CreateAlias("EntityList", "el")
.AddOrder(Order.Asc("el.Name"))
.SetProjection(Projections.Id)
.List<int>();
var entities = session.CreateCriteria<Entity>()
.Add(Expression.In(Projections.Id, entityIds))
.SetFetchMode("EntityList", FetchMode.Eager)
.List<Entity>();
// resort again
return entityIds.Select(id => entities.First(e => e.Id == id)).ToList();