Вы должны быть осторожны с вашим перекрестным продуктом здесь. Чтобы обрабатывать более одного уровня для извлечения информации, вам нужно использовать вместо или . Это гарантирует, что в вашем тестовом примере у вас не будет повторяющихся «шагов». Наконец, чтобы заставить это работать, используйте следующее:
var result = session.CreateCriteria(typeof (TestCase))
.CreateAlias("Steps", "s")
.CreateAlias("s.Actions", "a")
.SetResultTransformer(CriteriaUtil.DistinctRootEntity);
.List();