Represents calling a built in function in the target DBMS.
Inheritance: DbExpression
        /// <summary>
        /// Translates the <paramref name="functionExpression"/> into a string representation.
        /// </summary>
        /// <param name="functionExpression">The <see cref="DbFunctionExpression"/> to translate.</param>
        /// <returns><see cref="DbExpression"/></returns>
        protected virtual DbExpression VisitFunctionExpression(DbFunctionExpression functionExpression)
        {
            switch (functionExpression.FunctionExpressionType)
            {
            case DbFunctionExpressionType.String:
                return(VisitStringFunctionExpression((DbStringFunctionExpression)functionExpression));

            case DbFunctionExpressionType.Aggregate:
                return(VisitAggregateFunctionExpression((DbAggregateFunctionExpression)functionExpression));

            case DbFunctionExpressionType.DateTime:
                return(VisitDateTimeFunctionExpression((DbDateTimeFunctionExpression)functionExpression));

            case DbFunctionExpressionType.Mathematical:
                return(VisitMathematicalFunctionExpression((DbMathematicalFunctionExpression)functionExpression));

            default:
                throw new ArgumentOutOfRangeException("functionExpression", functionExpression.FunctionExpressionType, "Not supported");
            }
        }
 /// <summary>
 /// Translates the <paramref name="functionExpression"/> into a string representation.
 /// </summary>
 /// <param name="functionExpression">The <see cref="DbFunctionExpression"/> to translate.</param>
 /// <returns><see cref="DbExpression"/></returns>
 protected virtual DbExpression VisitFunctionExpression(DbFunctionExpression functionExpression)
 {
     switch (functionExpression.FunctionExpressionType)
     {
         case DbFunctionExpressionType.String:
             return VisitStringFunctionExpression((DbStringFunctionExpression)functionExpression);
         case DbFunctionExpressionType.Aggregate:
             return VisitAggregateFunctionExpression((DbAggregateFunctionExpression)functionExpression);
         case DbFunctionExpressionType.DateTime:
             return VisitDateTimeFunctionExpression((DbDateTimeFunctionExpression)functionExpression);
         case DbFunctionExpressionType.Mathematical:
             return VisitMathematicalFunctionExpression((DbMathematicalFunctionExpression)functionExpression);
         default:
             throw new ArgumentOutOfRangeException("functionExpression", functionExpression.FunctionExpressionType, "Not supported");
     }
 }