예제 #1
0
        protected override void IncludeNavigations(IncludeSpecification includeSpecification, Type resultType, Expression accessorExpression, bool querySourceRequiresTracking)
        {
            SelectorIncludeInjectingExpressionVisitor includeExpressionVisitor
                = new SelectorIncludeInjectingExpressionVisitor(
                      includeSpecification,
                      accessorExpression,
                      querySourceRequiresTracking);

            Expression = includeExpressionVisitor.Visit(Expression);
        }
예제 #2
0
            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));
            }