1

сочиняет NHibernate запрос с использованием критерияКак получить количество стыковых criteries в NHibernate

Junction criterion = Restrictions.Conjunction(); 
criterion.Add(something1); 
criterion.Add(something2); 
.... 
criterion.Add(somethingN); 

и как я могу получить кол-criteries в критерии, как criterion.GetCountOfCriteries()

в исходном коде Junction я вижу list из критерии

private readonly IList<ICriterion> criteria = new List<ICriterion>(); 

но он имеет модификатор как закрытый.

Некоторые идеи?

ответ

2

Невозможно. И это не предназначено. Зачем? Потому что мы работаем с API ICriteria, а не с его реализацией (что мы можем видеть в коде или отладчике).

Так что, если будет другая реализация ICriteria ... никто не может предоставить там будут какие-то readonly ILIst<ICriterion> вообще ...

В качестве решения я бы предложил - сделать это за пределами ICriteria API (if really needed). И, возможно, попробуйте пересмотреть, нужна ли такая информация.

+0

Временный, я реализовал свой пользовательский узел, который имеет свойство Count 'public int Count {get {return criteria.Count; }} ' И затем реализовать пользовательский класс Conjunction и Disjunction, унаследованный от MyJunction. Это хорошая практика? –

+1

Это блестящее решение. Зачем? Потому что 1) во-первых, не только доказывает концепцию экстенсивности NHibernate 2), это действительно дает вам возможность управлять своими вещами. Поскольку вы добавляете ожидаемые объекты (интерфейсы) в NHibernate * (реализуя API publisehd, например, «ICriterion») *, сохраняя частные функции независимыми от API NHibernate. БОЛЬШОЕ решение. Это называется ООП;););) –

Смежные вопросы