public override EntityQueryModelVisitor Create(
     QueryCompilationContext queryCompilationContext,
     EntityQueryModelVisitor parentEntityQueryModelVisitor)
     =>
         new SqlServerQueryModelVisitor(
             Model,
             QueryOptimizer,
             NavigationRewritingExpressionVisitorFactory,
             SubQueryMemberPushDownExpressionVisitor,
             QuerySourceTracingExpressionVisitorFactory,
             EntityResultFindingExpressionVisitorFactory,
             TaskBlockingExpressionVisitor,
             MemberAccessBindingExpressionVisitorFactory,
             OrderingExpressionVisitorFactory,
             ProjectionExpressionVisitorFactory,
             EntityQueryableExpressionVisitorFactory,
             QueryAnnotationExtractor,
             ResultOperatorHandler,
             EntityMaterializerSource,
             ExpressionPrinter,
             RelationalAnnotationProvider,
             IncludeExpressionVisitorFactory,
             SqlTranslatingExpressionVisitorFactory,
             CompositePredicateExpressionVisitorFactory,
             QueryFlattenerFactory,
             ContextOptions,
             (RelationalQueryCompilationContext)Check.NotNull(queryCompilationContext, nameof(queryCompilationContext)),
             (SqlServerQueryModelVisitor)parentEntityQueryModelVisitor);
        public virtual EntityTrackingInfo Create(
            QueryCompilationContext queryCompilationContext,
            QuerySourceReferenceExpression querySourceReferenceExpression,
            IEntityType entityType)
        {
            var trackingInfo = new EntityTrackingInfo(
                _keyValueFactorySource,
                queryCompilationContext,
                querySourceReferenceExpression,
                entityType);

            return trackingInfo;
        }
        public EntityResultFindingExpressionTreeVisitor(
            [NotNull] QueryCompilationContext queryCompilationContext)
        {
            Check.NotNull(queryCompilationContext, nameof(queryCompilationContext));

            _queryCompilationContext = queryCompilationContext;

            _untrackedQuerySources
                = new HashSet<IQuerySource>(
                    _queryCompilationContext.QueryAnnotations
                        .OfType<AsNoTrackingQueryAnnotation>()
                        .Select(qa => qa.QuerySource));
        }
        public virtual EntityTrackingInfo Create(
            QueryCompilationContext queryCompilationContext,
            QuerySourceReferenceExpression querySourceReferenceExpression,
            IEntityType entityType)
        {
            var trackingInfo = new EntityTrackingInfo(
                _entityKeyFactorySource,
                _clrPropertyGetterSource,
                queryCompilationContext,
                querySourceReferenceExpression,
                entityType);

            return trackingInfo;
        }
 /// <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>
 public override EntityQueryModelVisitor Create(
         QueryCompilationContext queryCompilationContext, EntityQueryModelVisitor parentEntityQueryModelVisitor)
     => new InMemoryQueryModelVisitor(
         QueryOptimizer,
         NavigationRewritingExpressionVisitorFactory,
         SubQueryMemberPushDownExpressionVisitor,
         QuerySourceTracingExpressionVisitorFactory,
         EntityResultFindingExpressionVisitorFactory,
         TaskBlockingExpressionVisitor,
         MemberAccessBindingExpressionVisitorFactory,
         OrderingExpressionVisitorFactory,
         ProjectionExpressionVisitorFactory,
         EntityQueryableExpressionVisitorFactory,
         QueryAnnotationExtractor,
         ResultOperatorHandler,
         EntityMaterializerSource,
         ExpressionPrinter,
         MaterializerFactory,
         Check.NotNull(queryCompilationContext, nameof(queryCompilationContext)));
Esempio n. 6
0
        /// <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>
        public virtual QueryTranslationPreprocessor Create(QueryCompilationContext queryCompilationContext)
        {
            Check.NotNull(queryCompilationContext, nameof(queryCompilationContext));

            return(new QueryTranslationPreprocessor(Dependencies, queryCompilationContext));
        }
 /// <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>
 public virtual EntityResultFindingExpressionVisitor Create(QueryCompilationContext queryCompilationContext)
     => new EntityResultFindingExpressionVisitor(
         _model,
         _entityTrackingInfoFactory,
         queryCompilationContext);
Esempio n. 8
0
 public override EntityQueryModelVisitor Create(QueryCompilationContext queryCompilationContext, EntityQueryModelVisitor parentEntityQueryModelVisitor)
 => new LocalDbEntityQueryModelVisitor(Dependencies, queryCompilationContext);
Esempio n. 9
0
 /// <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>
 public EntityEqualityRewritingExpressionVisitor(
     [NotNull] QueryCompilationContext queryCompilationContext)
 {
     _queryCompilationContext = queryCompilationContext;
     _model = _queryCompilationContext.Model;
 }
 public virtual QueryOptimizer Create(QueryCompilationContext queryCompilationContext)
 => new RelationalQueryOptimizer(_dependencies, _relationalDependencies, queryCompilationContext);
Esempio n. 11
0
 public virtual NavigationExpandingExpressionVisitor Create(
     QueryTranslationPreprocessor queryTranslationPreprocessor,
     QueryCompilationContext queryCompilationContext, IEvaluatableExpressionFilter evaluatableExpressionFilter)
 {
     return(new RelationalNavigationExpandingExpressionVisitor(queryTranslationPreprocessor, queryCompilationContext, evaluatableExpressionFilter));
 }
 public InMemoryQueryModelVisitor([NotNull] QueryCompilationContext queryCompilationContext)
     : base(Check.NotNull(queryCompilationContext, nameof(queryCompilationContext)))
 {
 }
 public virtual QueryTranslationPostprocessor Create(QueryCompilationContext queryCompilationContext)
 => new SqlServerQueryTranslationPostprocessor(
     _dependencies,
     _relationalDependencies,
     queryCompilationContext);
 /// <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>
 public virtual QueryTranslationPreprocessor Create(QueryCompilationContext queryCompilationContext)
 => new RelationalQueryTranslationPreprocessor(Dependencies, RelationalDependencies, queryCompilationContext);
Esempio n. 15
0
        public virtual QueryableMethodTranslatingExpressionVisitor Create(QueryCompilationContext queryCompilationContext)
        {
            Check.NotNull(queryCompilationContext, nameof(queryCompilationContext));

            return(new SqliteQueryableMethodTranslatingExpressionVisitor(_dependencies, _relationalDependencies, queryCompilationContext));
        }
 public NavigationExpandingVisitor([NotNull] QueryCompilationContext queryCompilationContext)
 {
     _queryCompilationContext = queryCompilationContext;
 }
 public RelationalSqlTranslatingExpressionVisitor Create(QueryCompilationContext queryCompilationContext, QueryableMethodTranslatingExpressionVisitor queryableMethodTranslatingExpressionVisitor) =>
 new VfpSqlTranslatingExpressionVisitor(_dependencies, queryCompilationContext, queryableMethodTranslatingExpressionVisitor);
 public ClickHouseSqlTranslatingExpressionVisitor(RelationalSqlTranslatingExpressionVisitorDependencies dependencies, QueryCompilationContext queryCompilationContext, QueryableMethodTranslatingExpressionVisitor queryableMethodTranslatingExpressionVisitor) : base(dependencies, queryCompilationContext, queryableMethodTranslatingExpressionVisitor)
 {
 }
Esempio n. 19
0
 public CosmosEagerLoadingExpressionVisitor(
     QueryCompilationContext queryCompilationContext,
     IQuerySourceTracingExpressionVisitorFactory querySourceTracingExpressionVisitorFactory)
     : base(queryCompilationContext, querySourceTracingExpressionVisitorFactory)
 {
 }
            protected void Compile(
                QueryCompilationContext queryCompilationContext,
                QueryModel queryModel,
                bool trackingQuery,
                bool asyncQuery,
                ref int collectionIncludeId,
                QuerySourceReferenceExpression targetQuerySourceReferenceExpression)
            {
                var entityParameter
                    = Expression.Parameter(targetQuerySourceReferenceExpression.Type, name: "entity");

                var propertyExpressions = new List <Expression>();
                var blockExpressions    = new List <Expression>();

                var entityType
                    = queryCompilationContext.FindEntityType(targetQuerySourceReferenceExpression.ReferencedQuerySource)
                      ?? queryCompilationContext.Model.FindEntityType(entityParameter.Type);

                if (entityType.IsQueryType)
                {
                    trackingQuery = false;
                }

                if (trackingQuery)
                {
                    blockExpressions.Add(
                        Expression.Call(
                            Expression.Property(
                                EntityQueryModelVisitor.QueryContextParameter,
                                nameof(QueryContext.QueryBuffer)),
                            _queryBufferStartTrackingMethodInfo,
                            entityParameter,
                            Expression.Constant(entityType)));
                }

                var includedIndex = 0;

                // ReSharper disable once LoopCanBeConvertedToQuery
                foreach (var includeLoadTreeNode in Children)
                {
                    blockExpressions.Add(
                        includeLoadTreeNode.Compile(
                            queryCompilationContext,
                            targetQuerySourceReferenceExpression,
                            entityParameter,
                            propertyExpressions,
                            trackingQuery,
                            asyncQuery,
                            ref includedIndex,
                            ref collectionIncludeId));
                }

                if (blockExpressions.Count > 1 ||
                    blockExpressions.Count == 1 &&
                    !trackingQuery)
                {
                    AwaitTaskExpressions(asyncQuery, blockExpressions);

                    var includeExpression
                        = blockExpressions.Last().Type == typeof(Task)
                            ? new TaskBlockingExpressionVisitor()
                          .Visit(
                              Expression.Call(
                                  _includeAsyncMethodInfo
                                  .MakeGenericMethod(targetQuerySourceReferenceExpression.Type),
                                  EntityQueryModelVisitor.QueryContextParameter,
                                  targetQuerySourceReferenceExpression,
                                  Expression.NewArrayInit(typeof(object), propertyExpressions),
                                  Expression.Lambda(
                                      Expression.Block(blockExpressions),
                                      EntityQueryModelVisitor.QueryContextParameter,
                                      entityParameter,
                                      _includedParameter,
                                      CancellationTokenParameter),
                                  CancellationTokenParameter))
                            : Expression.Call(
                              _includeMethodInfo.MakeGenericMethod(targetQuerySourceReferenceExpression.Type),
                              EntityQueryModelVisitor.QueryContextParameter,
                              targetQuerySourceReferenceExpression,
                              Expression.NewArrayInit(typeof(object), propertyExpressions),
                              Expression.Lambda(
                                  Expression.Block(typeof(void), blockExpressions),
                                  EntityQueryModelVisitor.QueryContextParameter,
                                  entityParameter,
                                  _includedParameter));

                    ApplyIncludeExpressionsToQueryModel(
                        queryModel, targetQuerySourceReferenceExpression, includeExpression);
                }
            }
Esempio n. 21
0
 public override EntityQueryModelVisitor Create(QueryCompilationContext queryCompilationContext, EntityQueryModelVisitor parentEntityQueryModelVisitor)
 {
     return(new ZQueryModelVisitor(base.Dependencies, base.RelationalDependencies,
                                   (RelationalQueryCompilationContext)queryCompilationContext, (RelationalQueryModelVisitor)parentEntityQueryModelVisitor));
 }
Esempio n. 22
0
        public virtual QueryTranslationPreprocessor Create(QueryCompilationContext queryCompilationContext)
        {
            Check.NotNull(queryCompilationContext, nameof(queryCompilationContext));

            return(new RelationalQueryTranslationPreprocessor(_dependencies, _relationalDependencies, queryCompilationContext, _navigationExpandingExpressionVisitorFactory));
        }
        public virtual ShapedQueryCompilingExpressionVisitor Create(QueryCompilationContext queryCompilationContext)
        {
            Check.NotNull(queryCompilationContext, nameof(queryCompilationContext));

            return(new InMemoryShapedQueryCompilingExpressionVisitor(_dependencies, queryCompilationContext));
        }
 public override ShapedQueryOptimizer Create(QueryCompilationContext queryCompilationContext)
 {
     return(new RelationalShapedQueryOptimizer(queryCompilationContext, SqlExpressionFactory));
 }
 public virtual QueryTranslationPostprocessor Create(QueryCompilationContext queryCompilationContext)
 {
     return(new QueryTranslationPostprocessor(_dependencies));
 }
Esempio n. 26
0
 public virtual ShapedQueryCompilingExpressionVisitor Create(QueryCompilationContext queryCompilationContext)
 => new InMemoryShapedQueryCompilingExpressionVisitor(_dependencies, queryCompilationContext);
 public QueryMetadataExtractingExpressionVisitor(QueryCompilationContext queryCompilationContext)
 {
     _queryCompilationContext = queryCompilationContext;
 }
 /// <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>
 public virtual EagerLoadingExpressionVisitor Create(
     QueryCompilationContext queryCompilationContext,
     IQuerySourceTracingExpressionVisitorFactory querySourceTracingExpressionVisitorFactory)
 => new EagerLoadingExpressionVisitor(queryCompilationContext, querySourceTracingExpressionVisitorFactory);
Esempio n. 29
0
 public LocalDbEntityQueryModelVisitor(EntityQueryModelVisitorDependencies dependencies, QueryCompilationContext queryCompilationContext)
     : base(dependencies, queryCompilationContext)
 {
 }
Esempio n. 30
0
 /// <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>
 public AdditionalFromClauseOptimizingQueryModelVisitor(QueryCompilationContext queryCompilationContext)
 {
     _queryCompilationContext = queryCompilationContext;
 }
Esempio n. 31
0
 public override EntityQueryableTranslator Create(QueryCompilationContext queryCompilationContext)
 {
     return(new InMemoryEntityQueryableTranslator(_model));
 }
Esempio n. 32
0
 /// <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>
 public override EntityQueryModelVisitor Create(
     QueryCompilationContext queryCompilationContext,
     EntityQueryModelVisitor parentEntityQueryModelVisitor)
 => new InMemoryQueryModelVisitor(
     Dependencies,
     Check.NotNull(queryCompilationContext, nameof(queryCompilationContext)));
Esempio n. 33
0
        public QueryableMethodNormalizingExpressionVisitor([NotNull] QueryCompilationContext queryCompilationContext)
        {
            Check.NotNull(queryCompilationContext, nameof(Query));

            _queryCompilationContext = queryCompilationContext;
        }
Esempio n. 34
0
 /// <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>
 public SubQueryMemberPushDownExpressionVisitor([NotNull] QueryCompilationContext queryCompilationContext)
 {
     _queryCompilationContext = queryCompilationContext;
 }
Esempio n. 35
0
 public SqlTranslatingExpressionVisitor(SelectExpression selectExpression,
                                        QueryCompilationContext queryCompilationContext)
 {
     _selectExpression        = selectExpression;
     _queryCompilationContext = queryCompilationContext;
 }
 /// <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>
 public LiteDBQueryModelVisitor(
     [NotNull] EntityQueryModelVisitorDependencies dependencies,
     [NotNull] QueryCompilationContext queryCompilationContext)
     : base(dependencies, queryCompilationContext)
 {
 }