Remotion.Linq.SqlBackend.MappingResolution.ResolvingExpressionVisitor.VisitMemberExpression C# (CSharp) Method

VisitMemberExpression() protected method

protected VisitMemberExpression ( MemberExpression expression ) : Expression
expression System.Linq.Expressions.MemberExpression
return System.Linq.Expressions.Expression
    protected override Expression VisitMemberExpression (MemberExpression expression)
    {
      ArgumentUtility.CheckNotNull ("expression", expression);

      // First process any nested expressions
      // E.g, for (kitchen.Cook).FirstName, first process kitchen => newExpression1 (SqlEntity)
      // then newExpression1.Cook => newExpression2 (SqlEntityRef/SqlEntity)
      // then newExpression2.FirstName => result (SqlColumn)

      var sourceExpression = VisitExpression (expression.Expression);
      var resolved = _stage.ResolveMemberAccess (sourceExpression, expression.Member, _resolver, _context);

      Assertion.DebugAssert (resolved != expression);
      return VisitExpression (resolved);
    }