Represents calling an aggregate function in the target DBMS.
Inheritance: DbFunctionExpression
        /// <summary>
        /// Translates the <paramref name="aggregateFunctionExpression"/> into a string representation.
        /// </summary>
        /// <param name="aggregateFunctionExpression">The <see cref="DbAggregateFunctionExpression"/> to translate.</param>
        /// <returns><see cref="string"/></returns>
        protected override DbExpression VisitAggregateFunctionExpression(DbAggregateFunctionExpression aggregateFunctionExpression)
        {
            var functionName   = GetAggregateFunctionBody(aggregateFunctionExpression.AggregateFunctionExpressionType);
            var functionSyntax = CreateDefaultFunctionSyntax(functionName, aggregateFunctionExpression.Arguments);

            return(functionSyntax);
        }
        /// <summary>
        /// Translates the <paramref name="aggregateFunctionExpression"/> into a string representation.
        /// </summary>
        /// <param name="aggregateFunctionExpression">The <see cref="DbAggregateFunctionExpression"/> to translate.</param>
        /// <returns><see cref="DbExpression"/></returns>
        protected virtual DbExpression VisitAggregateFunctionExpression(DbAggregateFunctionExpression aggregateFunctionExpression)
        {
            var arguments = VisitListExpression(aggregateFunctionExpression.Arguments);

            if (!ReferenceEquals(arguments, aggregateFunctionExpression.Arguments))
            {
                return(ExpressionFactory.MakeAggregateFunction(aggregateFunctionExpression.AggregateFunctionExpressionType,
                                                               arguments.First()));
            }
            return(aggregateFunctionExpression);
        }
 /// <summary>
 /// Creates a <see cref="DbAggregateFunctionExpression"/>.
 /// </summary>
 /// <param name="aggregateFunctionExpressionType">The <see cref="DbAggregateFunctionExpressionType"/> that specifies the type of aggregate expression to create.</param>
 /// <param name="target">The <see cref="DbExpression"/> that the aggregate function operates on.</param>
 /// <returns>A <see cref="DbAggregateFunctionExpression"/> instance.</returns>
 public DbAggregateFunctionExpression MakeAggregateFunction(DbAggregateFunctionExpressionType aggregateFunctionExpressionType, DbExpression target)
 {
     var aggregateExpression = new DbAggregateFunctionExpression(aggregateFunctionExpressionType, new[] { target });
     return aggregateExpression;
 }
 /// <summary>
 /// Translates the <paramref name="aggregateFunctionExpression"/> into a string representation.
 /// </summary>
 /// <param name="aggregateFunctionExpression">The <see cref="DbAggregateFunctionExpression"/> to translate.</param>
 /// <returns><see cref="string"/></returns>
 protected override DbExpression VisitAggregateFunctionExpression(DbAggregateFunctionExpression aggregateFunctionExpression)
 {
     var functionName = GetAggregateFunctionBody(aggregateFunctionExpression.AggregateFunctionExpressionType);
     var functionSyntax = CreateDefaultFunctionSyntax(functionName, aggregateFunctionExpression.Arguments);
     return functionSyntax;
 }
 /// <summary>
 /// Translates the <paramref name="aggregateFunctionExpression"/> into a string representation.
 /// </summary>
 /// <param name="aggregateFunctionExpression">The <see cref="DbAggregateFunctionExpression"/> to translate.</param>
 /// <returns><see cref="DbExpression"/></returns>
 protected virtual DbExpression VisitAggregateFunctionExpression(DbAggregateFunctionExpression aggregateFunctionExpression)
 {
     var arguments = VisitListExpression(aggregateFunctionExpression.Arguments);
     if (!ReferenceEquals(arguments, aggregateFunctionExpression.Arguments))
         return ExpressionFactory.MakeAggregateFunction(aggregateFunctionExpression.AggregateFunctionExpressionType,
                                                     arguments.First());
     return aggregateFunctionExpression;
 }