我有一个根实体集合(
IList<RootEntity>
)它是使用icriteria API从nhibernate调用返回的。
RootEntity
有一个子实体集合,让我们调用它
IList<Child1Entity>
.
Child1Entity
具有子实体集合(
IList<Child2Entity>
,这是第三层,导致
儿童1意识
集合中有重复项。
我的问题是如何将重复数据消除过程应用于子集合。
我有重复项的原因是我正在对子集合使用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);
谢谢!