Remotion.Linq.SqlBackend.MappingResolution.SqlContextExpressionVisitor.VisitNewExpression C# (CSharp) Method

VisitNewExpression() protected method

protected VisitNewExpression ( NewExpression expression ) : Expression
expression System.Linq.Expressions.NewExpression
return System.Linq.Expressions.Expression
    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;
    }