protected override void IncludeNavigations(IncludeSpecification includeSpecification, Type resultType, Expression accessorExpression, bool querySourceRequiresTracking) { SelectorIncludeInjectingExpressionVisitor includeExpressionVisitor = new SelectorIncludeInjectingExpressionVisitor( includeSpecification, accessorExpression, querySourceRequiresTracking); Expression = includeExpressionVisitor.Visit(Expression); }
protected override Expression VisitMethodCall(MethodCallExpression node) { if (node.Method.MethodIsClosedFormOf(_linqOperatorProvider.Select)) { var selectorIncludeInjectingVisitor = new SelectorIncludeInjectingExpressionVisitor( _includeSpecification, _materializerFactory, _queryCompilationContext, _accessorExpression, _querySourceRequiresTracking); var newSelector = selectorIncludeInjectingVisitor.Visit(node.Arguments[1]); return(node.Update(node.Object, new[] { node.Arguments[0], newSelector })); } if (node.Method.MethodIsClosedFormOf(EntityQueryMethodInfo) || node.Method.MethodIsClosedFormOf(OfTypeMethodInfo)) { return(ApplyTopLevelInclude(node)); } return(base.VisitMethodCall(node)); }