Трансформатор NHibernate DistinctRootEntity для дополнительной коллекции - PullRequest
1 голос
/ 22 октября 2010

У меня есть коллекция корневых объектов (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);

Спасибо!

1 Ответ

0 голосов
/ 14 апреля 2011

В итоге я написал фильтр в памяти для дочерних коллекций.NHibernate в настоящее время не поддерживает функции, которые я искал.

Спасибо за поиск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...