У меня есть отсоединенный объект QueryObject и второй критерий объекта ICriteria .
ICriteria criteria = session.CreateCriteria<Theme>()
.CreateAlias("InceptionCycle", "ic", JoinType.LeftOuterJoin)
.CreateAlias("ClosingCycle", "cc", JoinType.LeftOuterJoin)
.Add(Restrictions.Le("ic.CycleMonth", cycleDate))
.Add(Restrictions.Or(
Restrictions.IsNull("cc.ID"),
Restrictions.Ge("cc.CycleMonth", cycleDate)));
QueryOver<Theme, Theme> detached = new GlobalTheme().GetQuery();
// and now how to make new query : detached AND criteria
Можно ли объединить / присоединить / добавить условие И между этими двумя объектами критериев? Примерно так (конечно, следующая строка кода не работает, поскольку метод Add не принимает тип ICriteria ):
detached.DetachedCriteria.GetExecutableCriteria(session).Add(criteria).List<Theme>();
Причина, по которой я хочу достичь:
- В запросе GlobalTheme есть некоторые условия, которые можно смешивать с другими критериями.
- Критерии ICriteria имеют другое условие, которое также можно смешивать с другими критериями (в будущем я реорганизую его до QueryObject).
В результате для обработки всей комбинации n возможных критериев мне пришлось бы создать как минимум n * n QueryObjects . Если возможно И два или более критерия, мне нужно создать только n * QueryObject * типов.
Благодарность
1 ответ
Невозможно «объединить» запросы с критериями, но для повторного использования вы можете создать метод, который добавляет любые ограничения, которые вы хотите, к указанному запросу.
Общий пример с использованием метода расширения:
var results = session.CreateCriteria<AnEntity>()
.Add(aSpecificRestriction)
.AddGenericFilters()
.List();
public void AddGenericFilters(this ICriteria criteria)
{
criteria.Add(whatever);
return criteria;
}
Похожие вопросы
Новые вопросы
nhibernate
NHibernate - это объектно-реляционный картограф с открытым исходным кодом (ORM) для .NET Framework.