Remotion.Linq.SqlBackend.MappingResolution.ResolvingSelectExpressionVisitor.VisitSqlSubStatementExpression C# (CSharp) Метод

VisitSqlSubStatementExpression() публичный Метод

public VisitSqlSubStatementExpression ( SqlSubStatementExpression expression ) : Expression
expression Remotion.Linq.SqlBackend.SqlStatementModel.SqlSubStatementExpression
Результат System.Linq.Expressions.Expression
    public override Expression VisitSqlSubStatementExpression (SqlSubStatementExpression expression)
    {
      var newExpression = base.VisitSqlSubStatementExpression (expression);
      var newExpressionAsSqlSubStatementExpression = newExpression as SqlSubStatementExpression;

      // Substatements returning a single value need to be moved to the FROM part of the SQL statement because they might return more than one column.
      // Since a SqlSubStatementExpression must return a single row anyway, we can do this.
      // (However, errors that would have arisen because the statement does not return exactly one row will not be found.)
      if (newExpressionAsSqlSubStatementExpression != null
          && newExpressionAsSqlSubStatementExpression.SqlStatement.DataInfo is StreamedSingleValueInfo)
      {
        var sqlTable = newExpressionAsSqlSubStatementExpression.ConvertToSqlTable (Generator.GetUniqueIdentifier ("q"));
        var sqlTableReferenceExpression = new SqlTableReferenceExpression (sqlTable);

        Context.AddSqlTable (sqlTable, _sqlStatementBuilder);
        return VisitExpression (sqlTableReferenceExpression);
      }
      return newExpression;
    }
  }