public void AddHavingClause(HqlBooleanExpression where) { if (_hqlHaving == null) { _hqlHaving = TreeBuilder.Having(where); } else { var currentClause = (HqlBooleanExpression)_hqlHaving.Children.Single(); _hqlHaving.ClearChildren(); _hqlHaving.AddChild(TreeBuilder.BooleanAnd(currentClause, where)); } }
private HqlBooleanExpression VisitNew(NewExpression innerKeySelector, NewExpression outerKeySelector) { if (innerKeySelector.Arguments.Count != outerKeySelector.Arguments.Count) { throw new NotSupportedException(); } HqlBooleanExpression hql = GenerateEqualityNode(innerKeySelector, outerKeySelector, 0); for (int i = 1; i < innerKeySelector.Arguments.Count; i++) { hql = _hqlTreeBuilder.BooleanAnd(hql, GenerateEqualityNode(innerKeySelector, outerKeySelector, i)); } return(hql); }
public void AddWhereClause(HqlBooleanExpression where) { var currentWhere = Root.NodesPreOrder.Where(n => n is HqlWhere).FirstOrDefault(); if (currentWhere == null) { currentWhere = TreeBuilder.Where(where); Root.As <HqlQuery>().AddChild(currentWhere); } else { var currentClause = (HqlBooleanExpression)currentWhere.Children.Single(); currentWhere.ClearChildren(); currentWhere.AddChild(TreeBuilder.BooleanAnd(currentClause, where)); } }