Exemple #1
0
        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));
            }
        }
Exemple #2
0
        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));
            }
        }