У меня есть эти критерии, которые работают очень хорошо, за исключением того, что я получаю несколько одинаковых сущностей в коллекциях. Я знаю, что это сделано специально, и я знаю, что вы должны быть в состоянии использовать 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
работать?