public Expression BindNavigation(INavigation navigation) { if (!EntityType.IsAssignableFrom(navigation.DeclaringEntityType) && !navigation.DeclaringEntityType.IsAssignableFrom(EntityType)) { throw new InvalidOperationException( $"Called EntityProjectionExpression.GetNavigation() with incorrect INavigation. EntityType:{EntityType.DisplayName()}, Navigation:{navigation.Name}"); } if (!_navigationExpressionsCache.TryGetValue(navigation, out var expression)) { if (navigation.IsCollection()) { expression = new ObjectArrayProjectionExpression(navigation, AccessExpression); } else { expression = new EntityProjectionExpression( navigation.GetTargetType(), new ObjectAccessExpression(navigation, AccessExpression)); } _navigationExpressionsCache[navigation] = expression; } return(expression); }
public int AddToProjection(ObjectArrayProjectionExpression objectArrayProjection) => AddToProjection(objectArrayProjection, null);
protected abstract Expression VisitObjectArrayProjection(ObjectArrayProjectionExpression objectArrayProjectionExpression);
protected override Expression VisitObjectArrayProjection(ObjectArrayProjectionExpression objectArrayProjectionExpression) { _sqlBuilder.Append(objectArrayProjectionExpression); return(objectArrayProjectionExpression); }