protected override ResultOperatorBase CreateResultOperator(ClauseGenerationContext clauseGenerationContext) { var navigationPropertyPath = (MemberExpression)Source.Resolve( _navigationPropertyPathLambda.Parameters[0], _navigationPropertyPathLambda.Body, clauseGenerationContext); var includeResultOperator = new IncludeResultOperator(navigationPropertyPath); clauseGenerationContext.AddContextInfo(this, includeResultOperator); return(includeResultOperator); }
protected override ResultOperatorBase CreateResultOperator(ClauseGenerationContext clauseGenerationContext) { var navigationPropertyPath = Source.Resolve( _navigationPropertyPathLambda.Parameters[0], _navigationPropertyPathLambda.Body, clauseGenerationContext) as MemberExpression; if (navigationPropertyPath == null) { throw new InvalidOperationException( CoreStrings.InvalidComplexPropertyExpression(_navigationPropertyPathLambda)); } var includeResultOperator = new IncludeResultOperator(navigationPropertyPath); clauseGenerationContext.AddContextInfo(this, includeResultOperator); return(includeResultOperator); }
/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> protected override ResultOperatorBase CreateResultOperator(ClauseGenerationContext clauseGenerationContext) { var prm = Expression.Parameter(typeof(object)); var pathFromQuerySource = Resolve(prm, prm, clauseGenerationContext); var navigationPropertyPath = _navigationPropertyPathLambda.Body as MemberExpression; if (navigationPropertyPath == null) { throw new InvalidOperationException( CoreStrings.InvalidComplexPropertyExpression(_navigationPropertyPathLambda)); } var includeResultOperator = new IncludeResultOperator( _navigationPropertyPathLambda.GetComplexPropertyAccess().Select(p => p.Name), pathFromQuerySource); clauseGenerationContext.AddContextInfo(this, includeResultOperator); return(includeResultOperator); }
/// <summary> /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in /// any release. You should only use it directly in your code with extreme caution and knowing that /// doing so can result in application failures when updating to a new Entity Framework Core release. /// </summary> protected override ResultOperatorBase CreateResultOperator(ClauseGenerationContext clauseGenerationContext) { var prm = Expression.Parameter(typeof(object)); var pathFromQuerySource = Resolve(prm, prm, clauseGenerationContext); if (!NavigationPropertyPathLambda.TryGetComplexPropertyAccess(out var propertyPath)) { throw new InvalidOperationException( CoreStrings.InvalidIncludeLambdaExpression( nameof(EntityFrameworkQueryableExtensions.Include), NavigationPropertyPathLambda)); } var includeResultOperator = new IncludeResultOperator( propertyPath.Select(p => p.Name), pathFromQuerySource); clauseGenerationContext.AddContextInfo(this, includeResultOperator); return(includeResultOperator); }