Ejemplo n.º 1
0
 public IntermediateHqlTree(bool root, QueryMode mode)
 {
     _isRoot     = root;
     TreeBuilder = new HqlTreeBuilder();
     if (mode == QueryMode.Delete)
     {
         _root = TreeBuilder.Delete(TreeBuilder.From());
     }
     else if (mode == QueryMode.Update)
     {
         _root = TreeBuilder.Update(TreeBuilder.From(), TreeBuilder.Set());
     }
     else if (mode == QueryMode.UpdateVersioned)
     {
         _root = TreeBuilder.Update(TreeBuilder.Versioned(), TreeBuilder.From(), TreeBuilder.Set());
     }
     else if (mode == QueryMode.Insert)
     {
         _root       = TreeBuilder.Query(TreeBuilder.SelectFrom(TreeBuilder.From()));
         _insertRoot = TreeBuilder.Insert(TreeBuilder.Into(), _root as HqlQuery);
     }
     else
     {
         _root = TreeBuilder.Query(TreeBuilder.SelectFrom(TreeBuilder.From()));
     }
 }
Ejemplo n.º 2
0
        public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection <Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
        {
            HqlAlias alias = null;

            HqlWhere where = null;

            if (arguments.Count > 1)
            {
                var expr = (LambdaExpression)arguments[1];

                alias = treeBuilder.Alias(expr.Parameters[0].Name);
                where = treeBuilder.Where(visitor.Visit(arguments[1]).AsExpression());
            }

            return(treeBuilder.Exists(
                       treeBuilder.Query(
                           treeBuilder.SelectFrom(
                               treeBuilder.From(
                                   treeBuilder.Range(
                                       visitor.Visit(arguments[0]),
                                       alias)
                                   )
                               ),
                           where)));
        }
Ejemplo n.º 3
0
        public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection <Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
        {
            // All has two arguments.  Arg 1 is the source and arg 2 is the predicate
            var predicate = (LambdaExpression)arguments[1];

            return(treeBuilder.BooleanNot(
                       treeBuilder.Exists(
                           treeBuilder.Query(
                               treeBuilder.SelectFrom(
                                   treeBuilder.From(
                                       treeBuilder.Range(
                                           visitor.Visit(arguments[0]),
                                           treeBuilder.Alias(predicate.Parameters[0].Name))
                                       )
                                   ),
                               treeBuilder.Where(
                                   treeBuilder.BooleanNot(visitor.Visit(arguments[1]).ToBooleanExpression())
                                   )
                               )
                           )
                       ));
        }
Ejemplo n.º 4
0
        public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection <Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
        {
            // TODO - alias generator
            HqlAlias alias = treeBuilder.Alias("x");

            ParameterExpression param = Expression.Parameter(targetObject.Type, "x");

            HqlWhere where = treeBuilder.Where(visitor.Visit(Expression.Lambda(
                                                                 Expression.Equal(param, arguments[0]), param))
                                               .AsExpression());

            return(treeBuilder.Exists(
                       treeBuilder.Query(
                           treeBuilder.SelectFrom(
                               treeBuilder.From(
                                   treeBuilder.Range(
                                       visitor.Visit(targetObject),
                                       alias)
                                   )
                               ),
                           where)));
        }
Ejemplo n.º 5
0
 public IntermediateHqlTree(bool root)
 {
     _root       = root;
     TreeBuilder = new HqlTreeBuilder();
     Root        = TreeBuilder.Query(TreeBuilder.SelectFrom(TreeBuilder.From()));
 }