Example #1
0
 internal void Dump(DbGroupExpressionBinding binding)
 {
     this.Begin("DbGroupExpressionBinding", "VariableName", (object)binding.VariableName, "GroupVariableName", (object)binding.GroupVariableName);
     this.Begin("Expression");
     this.Dump(binding.Expression);
     this.End("Expression");
     this.End("DbGroupExpressionBinding");
 }
 protected virtual void VisitGroupExpressionBindingPre(DbGroupExpressionBinding binding)
 {
     if (binding == null)
     {
         throw new ArgumentException("binding");
     }
     VisitExpression(binding.Expression);
 }
Example #3
0
 /// <summary>
 ///     Dumps a DbGroupExpressionBinding including its VariableName, GroupVariableName and DbExpression
 /// </summary>
 /// <param name="binding"> The DbGroupExpressionBinding to dump </param>
 internal void Dump(DbGroupExpressionBinding binding)
 {
     Begin("DbGroupExpressionBinding", "VariableName", binding.VariableName, "GroupVariableName", binding.GroupVariableName);
     Begin("Expression");
     Dump(binding.Expression);
     End("Expression");
     End("DbGroupExpressionBinding");
 }
Example #4
0
            private TreeNode VisitGroupBinding(DbGroupExpressionBinding groupBinding)
            {
                TreeNode treeNode1 = this.VisitExpression(groupBinding.Expression);
                TreeNode treeNode2 = new TreeNode();

                treeNode2.Children.Add(treeNode1);
                treeNode2.Text.AppendFormat((IFormatProvider)CultureInfo.InvariantCulture, "Input : '{0}', '{1}'", (object)groupBinding.VariableName, (object)groupBinding.GroupVariableName);
                return(treeNode2);
            }
Example #5
0
            private TreeNode VisitGroupBinding(DbGroupExpressionBinding groupBinding)
            {
                TreeNode inputInfo = this.VisitExpression(groupBinding.Expression);
                TreeNode retInfo   = new TreeNode();

                retInfo.Children.Add(inputInfo);
                retInfo.Text.AppendFormat(CultureInfo.InvariantCulture, "Input : '{0}', '{1}'", groupBinding.VariableName, groupBinding.GroupVariableName);
                return(retInfo);
            }
Example #6
0
 private void VisitGroupBinding(DbGroupExpressionBinding groupBinding)
 {
     _key.Append("GBVV");
     VisitVariableName(groupBinding.VariableName);
     _key.Append(",");
     VisitVariableName(groupBinding.GroupVariableName);
     _key.Append("=(");
     groupBinding.Expression.Accept(this);
     _key.Append(')');
 }
Example #7
0
 private void Write(string name, DbGroupExpressionBinding binding)
 {
     WriteLine(string.Format("{0} ({1}):", name, binding.GetType().Name));
     _depth++;
     Write("Expression", binding.Expression);
     Write("GroupAggregate", binding.GroupAggregate);
     Write("GroupVariable", binding.GroupVariable);
     Write("GroupVariableName", binding.GroupVariableName);
     Write("GroupVariableType", binding.GroupVariableType);
     Write("Variable", binding.Variable);
     Write("VariableName", binding.VariableName);
     Write("VariableType", binding.VariableType);
     _depth--;
 }
        public override SqlFragment Visit(DbGroupByExpression expression)
        {
            // first process the input
            DbGroupExpressionBinding e           = expression.Input;
            SelectStatement          innerSelect = VisitInputExpressionEnsureSelect(e.Expression, e.VariableName, e.VariableType);

            scope.Add(e.GroupVariableName, innerSelect);

            SelectStatement select = WrapIfNotCompatible(innerSelect, expression.ExpressionKind);

            CollectionType ct = (CollectionType)expression.ResultType.EdmType;
            RowType        rt = (RowType)ct.TypeUsage.EdmType;

            int propIndex = 0;

            foreach (DbExpression key in expression.Keys)
            {
                var fragment = key.Accept(this);
                select.AddGroupBy(fragment);
                propIndex++;

                var colFragment = fragment as ColumnFragment;

                if (colFragment != null)
                {
                    colFragment             = colFragment.Clone();
                    colFragment.ColumnAlias = String.Format("K{0}", propIndex);
                    select.Columns.Add(colFragment);
                }
            }

            for (int agg = 0; agg < expression.Aggregates.Count; agg++)
            {
                DbAggregate         a  = expression.Aggregates[agg];
                DbFunctionAggregate fa = a as DbFunctionAggregate;
                if (fa == null)
                {
                    throw new NotSupportedException();
                }

                string         alias       = rt.Properties[propIndex++].Name;
                ColumnFragment functionCol = new ColumnFragment(null, null);
                functionCol.Literal     = HandleFunction(fa, a.Arguments[0].Accept(this));
                functionCol.ColumnAlias = alias;
                select.Columns.Add(functionCol);
            }

            return(select);
        }
 protected virtual void VisitGroupExpressionBindingPost(DbGroupExpressionBinding binding)
 {
 }
 protected virtual void VisitGroupExpressionBindingPre(DbGroupExpressionBinding binding)
 {
   if (binding == null) throw new ArgumentException("binding");
   VisitExpression(binding.Expression);
 }
Example #11
0
 protected virtual void VisitGroupExpressionBindingPre(DbGroupExpressionBinding binding)
 {
     EntityUtils.CheckArgumentNull <DbGroupExpressionBinding>(binding, nameof(binding));
     this.VisitExpression(binding.Expression);
 }
 /// <summary>
 ///     Dumps a DbGroupExpressionBinding with the specified decoration
 /// </summary>
 /// <param name="binding"> The DbGroupExpressionBinding to dump </param>
 /// <param name="name"> The decorating block name </param>
 internal void Dump(DbGroupExpressionBinding binding, string name)
 {
     Begin(name);
     Dump(binding);
     End(name);
 }
 /// <summary>
 ///     Dumps a DbGroupExpressionBinding including its VariableName, GroupVariableName and DbExpression
 /// </summary>
 /// <param name="binding"> The DbGroupExpressionBinding to dump </param>
 internal void Dump(DbGroupExpressionBinding binding)
 {
     Begin("DbGroupExpressionBinding", "VariableName", binding.VariableName, "GroupVariableName", binding.GroupVariableName);
     Begin("Expression");
     Dump(binding.Expression);
     End("Expression");
     End("DbGroupExpressionBinding");
 }
 /// <summary>
 ///     Convenience method to visit the specified <see cref="DbGroupExpressionBinding" />.
 /// </summary>
 /// <param name="binding"> The DbGroupExpressionBinding to visit. </param>
 /// <exception cref="ArgumentNullException">
 ///     <paramref name="binding" />
 ///     is null
 /// </exception>
 protected virtual void VisitGroupExpressionBindingPre(DbGroupExpressionBinding binding)
 {
     Check.NotNull(binding, "binding");
     VisitExpression(binding.Expression);
 }
 private void VisitGroupBinding(DbGroupExpressionBinding groupBinding)
 {
     _key.Append("GBVV");
     VisitVariableName(groupBinding.VariableName);
     _key.Append(",");
     VisitVariableName(groupBinding.GroupVariableName);
     _key.Append("=(");
     groupBinding.Expression.Accept(this);
     _key.Append(')');
 }
Example #16
0
 private VfpGroupExpressionBinding CreateDbGroupExpressionBinding(DbGroupExpressionBinding binding)
 {
     return(new VfpGroupExpressionBinding(binding.Expression.Accept(this),
                                          (VfpVariableReferenceExpression)binding.Variable.Accept(this),
                                          (VfpVariableReferenceExpression)binding.GroupVariable.Accept(this)));
 }
 protected virtual void VisitGroupExpressionBindingPost(DbGroupExpressionBinding binding)
 {
 }
Example #18
0
 /// <summary>
 ///     Dumps a DbGroupExpressionBinding with the specified decoration
 /// </summary>
 /// <param name="binding"> The DbGroupExpressionBinding to dump </param>
 /// <param name="name"> The decorating block name </param>
 internal void Dump(DbGroupExpressionBinding binding, string name)
 {
     Begin(name);
     Dump(binding);
     End(name);
 }
Example #19
0
 internal void Dump(DbGroupExpressionBinding binding, string name)
 {
     this.Begin(name);
     this.Dump(binding);
     this.End(name);
 }