protected override Expression VisitNewExpression (NewExpression expression)
{
ArgumentUtility.CheckNotNull ("expression", expression);
if (_currentContext == SqlExpressionContext.SingleValueRequired)
{
string message = string.Format (
"Cannot use a complex expression ('{0}') in a place where SQL requires a single value.",
FormattingExpressionTreeVisitor.Format (expression));
throw new NotSupportedException (message);
}
var newArguments = expression.Arguments.Select (ApplyValueContext).ToArray ();
if (!newArguments.SequenceEqual (expression.Arguments))
{
// ReSharper disable ConditionIsAlwaysTrueOrFalse
if (expression.Members != null && expression.Members.Count > 0)
return Expression.New (expression.Constructor, newArguments, expression.Members);
else
return Expression.New (expression.Constructor, newArguments);
// ReSharper restore ConditionIsAlwaysTrueOrFalse
}
return expression;
}