Критерии nHibernate для выбора всех сущностей с пустыми дочерними коллекциями - PullRequest
3 голосов
/ 06 мая 2010

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

структура класса:

public class Component
    {
        public IList<Version> Versions { get; set; }
    }

    public class Version
    {
        public IList<SubscribeEvent> SubscribedEvents { get; set; }
        public IList<PublishEvent> PublishedEvent { get; set; }
    }

Это не работает:

return session
                .CreateCriteria<Component>("c")
                .CreateCriteria("Versions", "v")
                .Add(Restrictions.Or(Restrictions.IsEmpty("c.Versions"), Restrictions.And(Restrictions.IsEmpty("v.PublishedEvents"),
                                                                                        Restrictions.IsEmpty("v.SubscribedEvents"))))
                .SetCacheable(true);

1 Ответ

3 голосов
/ 06 мая 2010

Мне удалось найти решение, но я не уверен, что оно лучшее (я должен купить NH profiler)

return session
            .CreateCriteria<Component>("c")
            .CreateAlias("Versions", "v", JoinType.LeftOuterJoin)
            .Add(Restrictions.Or(Restrictions.IsEmpty("c.Versions"),
                                 Restrictions.And(Restrictions.IsEmpty("v.SubscribedEvents"),
                                                  Restrictions.IsEmpty("v.PublishedEvents"))))
            .SetCacheable(true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...