У меня есть коллекция корневых объектов (IList<RootEntity>
), которая возвращается из вызова NHibernate с использованием API-интерфейса ICriteria.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);
Спасибо!