Represents a DbExpression that has a unary operator.
Inheritance: DbExpression
        /// <summary>
        /// Translates the <paramref name="unaryExpression"/> into a string representation.
        /// </summary>
        /// <param name="unaryExpression">The <see cref="DbUnaryExpression"/> to translate.</param>
        /// <returns><see cref="string"/></returns>
        protected override DbExpression VisitUnaryExpression(DbUnaryExpression unaryExpression)
        {
            string syntax;

            switch (unaryExpression.UnaryExpressionType)
            {
            case DbUnaryExpressionType.Not:
                syntax = string.Format("NOT {0}", Visit(unaryExpression.Operand));
                break;

            case DbUnaryExpressionType.Cast:
                syntax = string.Format("CAST({0} AS {1})",
                                       Visit(unaryExpression.Operand),
                                       GetCastFunctionBody(unaryExpression.TargetType));
                break;

            default:
                throw new ArgumentOutOfRangeException("unaryExpression",
                                                      string.Format(
                                                          "The UnaryExpressionType '{0}' is not supported",
                                                          unaryExpression.UnaryExpressionType));
            }

            return(ExpressionFactory.Sql(syntax));
        }
        /// <summary>
        /// Translates the <paramref name="unaryExpression"/> into a string representation.
        /// </summary>
        /// <param name="unaryExpression">The <see cref="DbUnaryExpression"/> to translate.</param>
        /// <returns><see cref="DbExpression"/></returns>
        protected virtual DbExpression VisitUnaryExpression(DbUnaryExpression unaryExpression)
        {
            var operandExpression = Visit(unaryExpression.Operand);

            if (!ReferenceEquals(operandExpression, unaryExpression.Operand))
            {
                return(ExpressionFactory.MakeUnary(unaryExpression.UnaryExpressionType, operandExpression,
                                                   unaryExpression.TargetType));
            }
            return(unaryExpression);
        }
 /// <summary>
 /// Creates a new <see cref="DbUnaryExpression"/>.
 /// </summary>
 /// <param name="unaryExpressionType">The <see cref="DbUnaryExpressionType"/> that specifies the type of unary expression to create.</param>
 /// <param name="operand">The <see cref="DbExpression"/> that represents the unary operand.</param>
 /// <param name="targetType">The <see cref="Type"/> that specifies the type to convert to.</param>
 /// <returns>A <see cref="DbUnaryExpression"/> instance.</returns>
 public DbUnaryExpression MakeUnary(DbUnaryExpressionType unaryExpressionType, DbExpression operand, Type targetType)
 {
     var unaryExpression = new DbUnaryExpression(unaryExpressionType, operand, targetType);
     return unaryExpression;
 }
        /// <summary>
        /// Translates the <paramref name="unaryExpression"/> into a string representation.
        /// </summary>
        /// <param name="unaryExpression">The <see cref="DbUnaryExpression"/> to translate.</param>
        /// <returns><see cref="string"/></returns>
        protected override DbExpression VisitUnaryExpression(DbUnaryExpression unaryExpression)
        {
            string syntax;

            switch (unaryExpression.UnaryExpressionType)
            {
                case DbUnaryExpressionType.Not:
                    syntax = string.Format("NOT {0}", Visit(unaryExpression.Operand));
                    break;
                case DbUnaryExpressionType.Cast:
                    syntax = string.Format("CAST({0} AS {1})",
                                           Visit(unaryExpression.Operand),
                                           GetCastFunctionBody(unaryExpression.TargetType));
                    break;
                default:
                    throw new ArgumentOutOfRangeException("unaryExpression",
                                                          string.Format(
                                                              "The UnaryExpressionType '{0}' is not supported",
                                                              unaryExpression.UnaryExpressionType));
            }

            return ExpressionFactory.Sql(syntax);
        }
 /// <summary>
 /// Translates the <paramref name="unaryExpression"/> into a string representation.
 /// </summary>
 /// <param name="unaryExpression">The <see cref="DbUnaryExpression"/> to translate.</param>
 /// <returns><see cref="DbExpression"/></returns>
 protected virtual DbExpression VisitUnaryExpression(DbUnaryExpression unaryExpression)
 {
     var operandExpression = Visit(unaryExpression.Operand);
     if (!ReferenceEquals(operandExpression, unaryExpression.Operand))
         return ExpressionFactory.MakeUnary(unaryExpression.UnaryExpressionType, operandExpression,
                                            unaryExpression.TargetType);
     return unaryExpression;
 }