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);
}