我有一个根实体(IList<RootEntity>
)的集合,它是使用ICriteria API从NHibernate调用返回的。 RootEntity
有一组子实体,我们可以调用IList<Child1Entity>
。 Child1Entity
有一组子实体(IList<Child2Entity>
),作为第三层,会导致Child1Entity
集合重复。
我的问题是如何将重复数据删除过程应用于子集合。
我有重复的原因是因为我在子集合上使用LeftOuterJoin。我无法删除LeftOuterJoin。
使用以下代码连接每个子表:
ICriteria rootCriteria = session.CreateCriteria(typeof(RootEntity));
rootCriteria.CreateCriteria("Child1Collection", "Child1CollectionAlias", NHibername.SqlCommand.JoinType.LeftOuterJoin);
rootCriteria.CreateCriteria("Child1CollectionAlias.Child2Collection", "Child2CollectionAlias", NHibername.SqlCommand.JoinType.LeftOuterJoin);
rootCriteria.Add(Expression.Eq("Child2CollectionAlias.Property", value));
rootCriteria.SetResultTransformer(DistinctRootEntity);
谢谢!
答案 0 :(得分:-1)
我最终为子集合编写了一个内存过滤器。 NHibernate目前不支持我正在寻找的功能。
感谢您的光临。