代码之家  ›  专栏  ›  技术社区  ›  a432511

用于子集合的NHibernate DistributrootEntity变压器

  •  1
  • a432511  · 技术社区  · 14 年前

    我有一个根实体集合( 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);
    

    谢谢!

    1 回复  |  直到 14 年前
        1
  •  -1
  •   a432511    14 年前

    最后我为孩子们的收藏写了一个内存中的过滤器。NHibernate目前不支持我正在寻找的功能。

    谢谢你的关注。