public override Expression Visit(DbCrossJoinExpression expression)
        {
            List<Expression> inputExpressions = new List<Expression>();

            foreach (var i in expression.Inputs)
            {
                inputExpressions.Add(this.Visit(i.Expression));
            }

            Expression last = inputExpressions[0];

            // Always: at most 2
            for (int i = 1; i < inputExpressions.Count; i++)
            {
                Type sourceType = TypeHelper.GetElementType(last.Type);
                Type collectionType = TypeHelper.GetElementType(inputExpressions[i].Type);

                // Create selector for the second collection
                LambdaExpression collectionSelector =
                    Expression.Lambda(
                        Expression.Convert(
                            inputExpressions[i],
                            typeof(IEnumerable<>).MakeGenericType(collectionType)),
                    Expression.Parameter(sourceType));

                last = this.CreateCrossJoin(
                    last,
                    collectionSelector,
                    expression.Inputs[i - 1].VariableName,
                    expression.Inputs[i].VariableName);
            }

            return last;
        }
Exemplo n.º 2
0
 /// <summary>
 /// Implements the visitor pattern for <see cref="T:System.Data.Common.CommandTrees.DbCrossJoinExpression"/>.
 /// </summary>
 /// <param name="expression">The <see cref="T:System.Data.Common.CommandTrees.DbCrossJoinExpression"/> that is visited.</param>
 public override void Visit(DbCrossJoinExpression expression)
 {
     foreach (DbExpressionBinding binding in expression.Inputs)
     {
         binding.Expression.Accept(this);
     }
 }
Exemplo n.º 3
0
 public override void Visit(DbCrossJoinExpression expression)
 {
     Write(expression);
     _depth++;
     Write("Inputs", expression.Inputs);
     _depth--;
 }
Exemplo n.º 4
0
            public override TreeNode Visit(DbCrossJoinExpression e)
            {
                TreeNode retInfo = NodeFromExpression(e);

                retInfo.Children.Add(this.VisitBindingList("Inputs", e.Inputs));
                return(retInfo);
            }
Exemplo n.º 5
0
        public override Expression Visit(DbCrossJoinExpression expression)
        {
            List <Expression> inputExpressions = new List <Expression>();

            foreach (var i in expression.Inputs)
            {
                inputExpressions.Add(this.Visit(i.Expression));
            }

            Expression last = inputExpressions[0];

            // Always: at most 2
            for (int i = 1; i < inputExpressions.Count; i++)
            {
                Type sourceType     = TypeHelper.GetElementType(last.Type);
                Type collectionType = TypeHelper.GetElementType(inputExpressions[i].Type);

                // Create selector for the second collection
                LambdaExpression collectionSelector =
                    Expression.Lambda(
                        Expression.Convert(
                            inputExpressions[i],
                            typeof(IEnumerable <>).MakeGenericType(collectionType)),
                        Expression.Parameter(sourceType));

                last = this.CreateCrossJoin(
                    last,
                    collectionSelector,
                    expression.Inputs[i - 1].VariableName,
                    expression.Inputs[i].VariableName);
            }

            return(last);
        }
Exemplo n.º 6
0
            public override TreeNode Visit(DbCrossJoinExpression e)
            {
                Check.NotNull <DbCrossJoinExpression>(e, nameof(e));
                TreeNode treeNode = ExpressionPrinter.PrinterVisitor.NodeFromExpression((DbExpression)e);

                treeNode.Children.Add(this.VisitBindingList("Inputs", e.Inputs));
                return(treeNode);
            }
Exemplo n.º 7
0
        public override object Visit(DbCrossJoinExpression expression)
        {
            foreach (var arg in expression.Inputs)
            {
                this.Visit(arg.Expression);
            }

            return(null);
        }
Exemplo n.º 8
0
            public override TreeNode Visit(DbCrossJoinExpression e)
            {
                Check.NotNull(e, "e");

                var retInfo = NodeFromExpression(e);

                retInfo.Children.Add(VisitBindingList("Inputs", e.Inputs));
                return(retInfo);
            }
Exemplo n.º 9
0
        public override LegacyCommandTrees.DbExpression Visit(DbCrossJoinExpression expression)
        {
            Debug.Assert(expression != null, "expression != null");

            return
                (LegacyExpressionBuilder
                 .CrossJoin(
                     expression.Inputs.Select(
                         binding => binding.Expression.Accept(this).BindAs(binding.VariableName))));
        }
Exemplo n.º 10
0
 public override void Visit(DbCrossJoinExpression e)
 {
     VisitExprKind(e.ExpressionKind);
     _key.Append('(');
     foreach (var i in e.Inputs)
     {
         VisitBinding(i);
     }
     _key.Append(')');
 }
Exemplo n.º 11
0
 public override void Visit(DbCrossJoinExpression e)
 {
     Begin(e);
     Begin("Inputs");
     foreach (DbExpressionBinding binding in e.Inputs)
     {
         Dump(binding, "Input");
     }
     End("Inputs");
     End(e);
 }
Exemplo n.º 12
0
 public override void Visit(DbCrossJoinExpression e)
 {
     Check.NotNull <DbCrossJoinExpression>(e, nameof(e));
     this.VisitExprKind(e.ExpressionKind);
     this._key.Append('(');
     foreach (DbExpressionBinding input in (IEnumerable <DbExpressionBinding>)e.Inputs)
     {
         this.VisitBinding(input);
     }
     this._key.Append(')');
 }
Exemplo n.º 13
0
 public override void Visit(DbCrossJoinExpression e)
 {
     Check.NotNull <DbCrossJoinExpression>(e, nameof(e));
     this.Begin((DbExpression)e);
     this.Begin("Inputs");
     foreach (DbExpressionBinding input in (IEnumerable <DbExpressionBinding>)e.Inputs)
     {
         this.Dump(input, "Input");
     }
     this.End("Inputs");
     this.End((DbExpression)e);
 }
Exemplo n.º 14
0
        /// <summary>
        /// Implements the visitor pattern for <see cref="T:System.Data.Common.CommandTrees.DbCrossJoinExpression"/>.
        /// </summary>
        /// <param name="expression">The <see cref="T:System.Data.Common.CommandTrees.DbCrossJoinExpression"/> that is visited.</param>
        public override void Visit(DbCrossJoinExpression expression)
        {
            if (expression == null)
            {
                throw new ArgumentNullException("expression");
            }

            foreach (DbExpressionBinding binding in expression.Inputs)
            {
                binding.Expression.Accept(this);
            }
        }
Exemplo n.º 15
0
 public override void Visit(DbCrossJoinExpression expression)
 {
     EntityUtils.CheckArgumentNull <DbCrossJoinExpression>(expression, nameof(expression));
     foreach (DbExpressionBinding input in (IEnumerable <DbExpressionBinding>)expression.Inputs)
     {
         this.VisitExpressionBindingPre(input);
     }
     foreach (DbExpressionBinding input in (IEnumerable <DbExpressionBinding>)expression.Inputs)
     {
         this.VisitExpressionBindingPost(input);
     }
 }
Exemplo n.º 16
0
        public override void Visit(DbCrossJoinExpression e)
        {
            Check.NotNull(e, "e");

            Begin(e);
            Begin("Inputs");
            foreach (var binding in e.Inputs)
            {
                Dump(binding, "Input");
            }
            End("Inputs");
            End(e);
        }
Exemplo n.º 17
0
 public override void Visit(DbCrossJoinExpression expression)
 {
     if (expression == null)
     {
         throw new ArgumentException("expression");
     }
     foreach (DbExpressionBinding binding in expression.Inputs)
     {
         VisitExpressionBindingPre(binding);
     }
     foreach (DbExpressionBinding binding2 in expression.Inputs)
     {
         VisitExpressionBindingPost(binding2);
     }
 }
Exemplo n.º 18
0
        /// <summary>
        ///     Visitor pattern method for <see cref="DbCrossJoinExpression" />.
        /// </summary>
        /// <param name="expression"> The DbCrossJoinExpression that is being visited. </param>
        /// <exception cref="ArgumentNullException">
        ///     <paramref name="expression" />
        ///     is null
        /// </exception>
        public override void Visit(DbCrossJoinExpression expression)
        {
            // #433613: PreSharp warning 56506: Parameter 'expression' to this public method must be validated: A null-dereference can occur here.
            Check.NotNull(expression, "expression");

            foreach (var b in expression.Inputs)
            {
                VisitExpressionBindingPre(b);
            }

            foreach (var b in expression.Inputs)
            {
                VisitExpressionBindingPost(b);
            }
        }
		public override void Visit(DbCrossJoinExpression expression)
		{
			throw new NotSupportedException("Visit(\"CrossJoinExpression\") is not supported.");
		}
Exemplo n.º 20
0
 public override SqlFragment Visit(DbCrossJoinExpression expression)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 21
0
        /// <summary>
        ///     Visitor pattern method for <see cref="DbCrossJoinExpression" />.
        /// </summary>
        /// <param name="expression"> The DbCrossJoinExpression that is being visited. </param>
        /// <exception cref="ArgumentNullException">
        ///     <paramref name="expression" />
        ///     is null
        /// </exception>
        public override void Visit(DbCrossJoinExpression expression)
        {
            // #433613: PreSharp warning 56506: Parameter 'expression' to this public method must be validated: A null-dereference can occur here.
            Check.NotNull(expression, "expression");

            foreach (var b in expression.Inputs)
            {
                VisitExpressionBindingPre(b);
            }

            foreach (var b in expression.Inputs)
            {
                VisitExpressionBindingPost(b);
            }
        }
        public override void Visit(DbCrossJoinExpression e)
        {
            Check.NotNull(e, "e");

            Begin(e);
            Begin("Inputs");
            foreach (var binding in e.Inputs)
            {
                Dump(binding, "Input");
            }
            End("Inputs");
            End(e);
        }
Exemplo n.º 23
0
 public override void Visit(DbCrossJoinExpression expression)
 {
     throw new NotSupportedException("Visit(\"DbCrossJoinExpression\") is not supported.");
 }
 public override void Visit(DbCrossJoinExpression expression) { }
Exemplo n.º 25
0
 public override void Visit(DbCrossJoinExpression e)
 {
     Begin(e);
     Begin("Inputs");
     foreach (DbExpressionBinding binding in e.Inputs)
     {
         Dump(binding, "Input");
     }
     End("Inputs");
     End(e);
 }
Exemplo n.º 26
0
 public override SqlFragment Visit(DbCrossJoinExpression expression)
 {
     Debug.Assert(expression.Inputs.Count == 2);
     return HandleJoinExpression(expression.Inputs[0], expression.Inputs[1],
         expression.ExpressionKind, null);
 }
 public override DbExpression Visit(DbCrossJoinExpression expression)
 {
     System.Diagnostics.Debug.Print("Visit(DbCrossJoinExpression): {0}", expression);
     return base.Visit(expression);
 }
Exemplo n.º 28
0
 public override void Visit(DbCrossJoinExpression e)
 {
     VisitExprKind(e.ExpressionKind);
     _key.Append('(');
     foreach (var i in e.Inputs)
     {
         VisitBinding(i);
     }
     _key.Append(')');
 }
Exemplo n.º 29
0
            public override DbExpressionEntitySetInfo Visit(DbCrossJoinExpression expression)
            {
                Check.NotNull(expression, "expression");

                return(null);
            }
Exemplo n.º 30
0
 public override bool Visit(DbCrossJoinExpression expression)
 {
     return(VisitExpressionBindingList(expression.Inputs));
 }
Exemplo n.º 31
0
 public override TReturn Visit(DbCrossJoinExpression expression)
 {
     throw ConstructNotSupportedException(expression);
 }
Exemplo n.º 32
0
 public override ChangeNode Visit(DbCrossJoinExpression node)
 {
     throw EntityUtil.NotSupported(System.Data.Entity.Strings.Update_UnsupportedJoinType(node.ExpressionKind));
 }
Exemplo n.º 33
0
 public override void Visit(DbCrossJoinExpression expression)
 {
   if (expression == null) throw new ArgumentException("expression");
   foreach (DbExpressionBinding binding in expression.Inputs)
   {
     VisitExpressionBindingPre(binding);
   }
   foreach (DbExpressionBinding binding2 in expression.Inputs)
   {
     VisitExpressionBindingPost(binding2);
   }
 }
Exemplo n.º 34
0
 /// <summary>
 ///     Visitor pattern method for DbCrossJoinExpression.
 /// </summary>
 /// <param name="expression"> The DbCrossJoinExpression that is being visited. </param>
 public abstract void Visit(DbCrossJoinExpression expression);
Exemplo n.º 35
0
 /// <summary>
 ///     Visitor pattern method for DbCrossJoinExpression.
 /// </summary>
 /// <param name="expression"> The DbCrossJoinExpression that is being visited. </param>
 public abstract void Visit(DbCrossJoinExpression expression);
Exemplo n.º 36
0
        /// <summary>
        /// Implements the visitor pattern for <see cref="T:System.Data.Common.CommandTrees.DbCrossJoinExpression"/>.
        /// </summary>
        /// <param name="expression">The <see cref="T:System.Data.Common.CommandTrees.DbCrossJoinExpression"/> that is visited.</param>
        public override void Visit(DbCrossJoinExpression expression)
        {
            if (expression == null)
            {
                throw new ArgumentNullException("expression");
            }

            foreach (DbExpressionBinding binding in expression.Inputs)
            {
                binding.Expression.Accept(this);
            }
        }
Exemplo n.º 37
0
 public override bool Visit(DbCrossJoinExpression expression)
 {
     Check.NotNull <DbCrossJoinExpression>(expression, nameof(expression));
     return(this.VisitExpressionBindingList(expression.Inputs));
 }
Exemplo n.º 38
0
 public override ISqlFragment Visit(DbCrossJoinExpression e)
 {
     return(VisitJoinExpression(e.Inputs, e.ExpressionKind, "CROSS JOIN", null));
 }
Exemplo n.º 39
0
 public override DbExpression Visit(DbCrossJoinExpression expression)
 {
     System.Diagnostics.Debug.Print("Visit(DbCrossJoinExpression): {0}", expression);
     return(base.Visit(expression));
 }
Exemplo n.º 40
0
        public override ChangeNode Visit(DbCrossJoinExpression node)
        {
            Check.NotNull(node, "node");

            throw new NotSupportedException(Strings.Update_UnsupportedJoinType(node.ExpressionKind));
        }
Exemplo n.º 41
0
 public override SqlFragment Visit(DbCrossJoinExpression expression)
 {
     Debug.Assert(expression.Inputs.Count == 2);
     return(HandleJoinExpression(expression.Inputs[0], expression.Inputs[1],
                                 expression.ExpressionKind, null));
 }
        /// <summary>
        /// Visitor pattern method for <see cref="DbCrossJoinExpression"/>.
        /// </summary>
        /// <param name="expression">The DbCrossJoinExpression that is being visited.</param>
        /// <exception cref="ArgumentNullException"><paramref name="expression"/> is null</exception>
        public override void Visit(DbCrossJoinExpression expression)
        {
            foreach (var b in expression.Inputs)
            {
                VisitExpressionBindingPre(b);
            }

            foreach (var b in expression.Inputs)
            {
                VisitExpressionBindingPost(b);
            }
        }
        /// <summary>
        ///     Visitor pattern method for <see cref="DbCrossJoinExpression" />.
        /// </summary>
        /// <param name="expression"> The DbCrossJoinExpression that is being visited. </param>
        /// <exception cref="ArgumentNullException">
        ///     <paramref name="expression" />
        ///     is null
        /// </exception>
        public override void Visit(DbCrossJoinExpression expression)
        {
            Check.NotNull(expression, "expression");

            foreach (var b in expression.Inputs)
            {
                VisitExpressionBindingPre(b);
            }

            foreach (var b in expression.Inputs)
            {
                VisitExpressionBindingPost(b);
            }
        }
Exemplo n.º 44
0
 public override DbExpressionEntitySetInfo Visit(DbCrossJoinExpression expression)
 {
     return(null);
 }
Exemplo n.º 45
0
 public override void Visit(DbCrossJoinExpression expression)
 {
     Contract.Requires(expression != null);
 }