Как создать уникальный набор результатов из NHibernate - PullRequest
1 голос
/ 01 мая 2009

У меня есть эти критерии, которые работают очень хорошо, за исключением того, что я получаю несколько одинаковых сущностей в коллекциях. Я знаю, что это сделано специально, и я знаю, что вы должны быть в состоянии использовать ResultTransformer, чтобы избежать этого или фильтровать хешированный набор после запроса.

Мой запрос выглядит так:

IMultiCriteria criteria = 
    session.CreateMultiCriteria()
           .Add(DetachedCriteria.For<Building>()
                  .Add(Restrictions.Eq("Id", BuildingId))
                  .CreateCriteria("Windows", JoinType.LeftOuterJoin)
                  .SetFetchMode("Shadows", FetchMode.Eager))
           .Add(DetachedCriteria.For<Building>()
                  .Add(Restrictions.Eq("Id", BuildingId))
                  .CreateCriteria("BuildingParts", JoinType.LeftOuterJoin)
                  .CreateCriteria("Windows", JoinType.LeftOuterJoin))

Решение для фильтрации HashedSet для меня невозможно, так как я не могу установить коллекцию обратно на объект - у них есть собственный установщик.

Я попробовал ResultTransformer с DistinctRootEntityResultTransformer, но не могу заставить его работать. Он продолжает возвращать несколько одинаковых сущностей в коллекциях BuildingParts и Windows.

Есть предложения, что делать? Или как заставить ResultTransformer работать?

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