Exemplo n.º 1
0
        public void Process(TakeResultOperator resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree)
        {
            VisitorParameters parameters = queryModelVisitor.VisitorParameters;
            NamedParameter    namedParameter;

            if (parameters.ConstantToParameterMap.TryGetValue(resultOperator.Count as ConstantExpression, out namedParameter))
            {
                parameters.RequiredHqlParameters.Add(new NamedParameterDescriptor(namedParameter.Name, null, false));
                tree.AddTakeClause(tree.TreeBuilder.Parameter(namedParameter.Name));
            }
            else
            {
                tree.AddTakeClause(tree.TreeBuilder.Constant(resultOperator.GetConstantCount()));
            }
        }
Exemplo n.º 2
0
        public void Process(FirstResultOperator resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree)
        {
            var firstMethod = resultOperator.ReturnDefaultWhenEmpty ? FirstOrDefault : First;

            AddClientSideEval(firstMethod, queryModelVisitor, tree);

            tree.AddTakeClause(tree.TreeBuilder.Constant(1));
        }
Exemplo n.º 3
0
        public void Process(FirstResultOperator resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree)
        {
            var firstMethod = resultOperator.ReturnDefaultWhenEmpty
                                  ? ReflectionHelper.GetMethodDefinition(() => Queryable.FirstOrDefault <object>(null))
                                  : ReflectionHelper.GetMethodDefinition(() => Queryable.First <object>(null));

            AddClientSideEval(firstMethod, queryModelVisitor, tree);

            tree.AddTakeClause(tree.TreeBuilder.Constant(1));
        }
Exemplo n.º 4
0
        public void Process(AnyResultOperator anyOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree)
        {
            if (tree.IsRoot)
            {
                tree.AddTakeClause(tree.TreeBuilder.Constant(1));

                Expression <Func <IEnumerable <object>, bool> > x = l => l.Any();
                tree.AddListTransformer(x);
            }
            else
            {
                tree.SetRoot(tree.TreeBuilder.Exists((HqlQuery)tree.Root));
            }
        }
Exemplo n.º 5
0
        public void Process(AllResultOperator resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree)
        {
            tree.AddWhereClause(tree.TreeBuilder.BooleanNot(
                                    HqlGeneratorExpressionTreeVisitor.Visit(resultOperator.Predicate, queryModelVisitor.VisitorParameters).
                                    ToBooleanExpression()));

            if (tree.IsRoot)
            {
                tree.AddTakeClause(tree.TreeBuilder.Constant(1));

                Expression <Func <IEnumerable <object>, bool> > x = l => !l.Any();
                tree.AddListTransformer(x);
            }
            else
            {
                tree.SetRoot(tree.TreeBuilder.BooleanNot(tree.TreeBuilder.Exists((HqlQuery)tree.Root)));
            }
        }
Exemplo n.º 6
0
        public void Process(AnyResultOperator anyOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree)
        {
            if (tree.IsRoot)
            {
                tree.AddTakeClause(tree.TreeBuilder.Constant(1));

                Expression <Func <IEnumerable <object>, bool> > x = l => l.Any();
                tree.AddListTransformer(x);

                // NH-3850: Queries with polymorphism yields many results which must be combined.
                Expression <Func <IEnumerable <bool>, bool> > px = l => l.Any(r => r);
                tree.AddPostExecuteTransformer(px);
            }
            else
            {
                tree.SetRoot(tree.TreeBuilder.Exists((HqlQuery)tree.Root));
            }
        }
Exemplo n.º 7
0
        public void Process(AllResultOperator resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree)
        {
            tree.AddWhereClause(tree.TreeBuilder.BooleanNot(
                                    HqlGeneratorExpressionVisitor.Visit(resultOperator.Predicate, queryModelVisitor.VisitorParameters).
                                    ToBooleanExpression()));

            if (tree.IsRoot)
            {
                tree.AddTakeClause(tree.TreeBuilder.Constant(1));

                Expression <Func <IEnumerable <object>, bool> > x = l => !l.Any();
                tree.AddListTransformer(x);

                // NH-3850: Queries with polymorphism yields many results which must be combined.
                Expression <Func <IEnumerable <bool>, bool> > px = l => l.All(r => r);
                tree.AddPostExecuteTransformer(px);
            }
            else
            {
                tree.SetRoot(tree.TreeBuilder.BooleanNot(tree.TreeBuilder.Exists((HqlQuery)tree.Root)));
            }
        }