public QueryCompilationContextDependencies(
            [NotNull] IModel model,
            [NotNull] IQueryTranslationPreprocessorFactory queryTranslationPreprocessorFactory,
            [NotNull] IQueryableMethodTranslatingExpressionVisitorFactory queryableMethodTranslatingExpressionVisitorFactory,
            [NotNull] IQueryTranslationPostprocessorFactory queryTranslationPostprocessorFactory,
            [NotNull] IShapedQueryCompilingExpressionVisitorFactory shapedQueryCompilingExpressionVisitorFactory,
            [NotNull] IExecutionStrategyFactory executionStrategyFactory,
            [NotNull] ICurrentDbContext currentContext,
            [NotNull] IDbContextOptions contextOptions,
            [NotNull] IDiagnosticsLogger <DbLoggerCategory.Query> logger)
        {
            Check.NotNull(model, nameof(model));
            Check.NotNull(queryTranslationPreprocessorFactory, nameof(queryTranslationPreprocessorFactory));
            Check.NotNull(queryableMethodTranslatingExpressionVisitorFactory, nameof(queryableMethodTranslatingExpressionVisitorFactory));
            Check.NotNull(queryTranslationPostprocessorFactory, nameof(queryTranslationPostprocessorFactory));
            Check.NotNull(shapedQueryCompilingExpressionVisitorFactory, nameof(shapedQueryCompilingExpressionVisitorFactory));
            Check.NotNull(executionStrategyFactory, nameof(executionStrategyFactory));
            Check.NotNull(currentContext, nameof(currentContext));
            Check.NotNull(contextOptions, nameof(contextOptions));
            Check.NotNull(logger, nameof(logger));

            _currentContext = currentContext;
            Model           = model;
            QueryTranslationPreprocessorFactory = queryTranslationPreprocessorFactory;
            QueryableMethodTranslatingExpressionVisitorFactory = queryableMethodTranslatingExpressionVisitorFactory;
            QueryTranslationPostprocessorFactory         = queryTranslationPostprocessorFactory;
            ShapedQueryCompilingExpressionVisitorFactory = shapedQueryCompilingExpressionVisitorFactory;
            _executionStrategyFactory   = executionStrategyFactory;
            IsRetryingExecutionStrategy = executionStrategyFactory.Create().RetriesOnFailure;
            ContextOptions = contextOptions;
            Logger         = logger;
        }
示例#2
0
        public QueryCompilationContext(
            IModel model,
            IQueryOptimizerFactory queryOptimizerFactory,
            IEntityQueryableTranslatorFactory entityQuerableTranslatorFactory,
            IQueryableMethodTranslatingExpressionVisitorFactory queryableMethodTranslatingExpressionVisitorFactory,
            IShapedQueryOptimizerFactory shapedQueryOptimizerFactory,
            IShapedQueryCompilingExpressionVisitorFactory shapedQueryCompilingExpressionVisitorFactory,
            ICurrentDbContext currentDbContext,
            IDbContextOptions contextOptions,
            IDiagnosticsLogger <DbLoggerCategory.Query> logger,
            bool async)
        {
            Async             = async;
            TrackQueryResults = currentDbContext.Context.ChangeTracker.QueryTrackingBehavior == QueryTrackingBehavior.TrackAll;
            Model             = model;
            ContextOptions    = contextOptions;
            ContextType       = currentDbContext.Context.GetType();
            Logger            = logger;

            _queryOptimizerFactory            = queryOptimizerFactory;
            _entityQueryableTranslatorFactory = entityQuerableTranslatorFactory;
            _queryableMethodTranslatingExpressionVisitorFactory = queryableMethodTranslatingExpressionVisitorFactory;
            _shapedQueryOptimizerFactory = shapedQueryOptimizerFactory;
            _shapedQueryCompilingExpressionVisitorFactory = shapedQueryCompilingExpressionVisitorFactory;
        }
        public QueryCompilationContextDependencies(
            [NotNull] IModel model,
            [NotNull] IQueryOptimizerFactory queryOptimizerFactory,
            [NotNull] IQueryableMethodTranslatingExpressionVisitorFactory queryableMethodTranslatingExpressionVisitorFactory,
            [NotNull] IShapedQueryOptimizerFactory shapedQueryOptimizerFactory,
            [NotNull] IShapedQueryCompilingExpressionVisitorFactory shapedQueryCompilingExpressionVisitorFactory,
            [NotNull] ICurrentDbContext currentContext,
            [NotNull] IDbContextOptions contextOptions,
            [NotNull] IDiagnosticsLogger <DbLoggerCategory.Query> logger)
        {
            Check.NotNull(model, nameof(model));
            Check.NotNull(queryOptimizerFactory, nameof(queryOptimizerFactory));
            Check.NotNull(queryableMethodTranslatingExpressionVisitorFactory, nameof(queryableMethodTranslatingExpressionVisitorFactory));
            Check.NotNull(shapedQueryOptimizerFactory, nameof(shapedQueryOptimizerFactory));
            Check.NotNull(shapedQueryCompilingExpressionVisitorFactory, nameof(shapedQueryCompilingExpressionVisitorFactory));
            Check.NotNull(currentContext, nameof(currentContext));
            Check.NotNull(contextOptions, nameof(contextOptions));
            Check.NotNull(logger, nameof(logger));

            CurrentContext        = currentContext;
            Model                 = model;
            QueryOptimizerFactory = queryOptimizerFactory;
            QueryableMethodTranslatingExpressionVisitorFactory = queryableMethodTranslatingExpressionVisitorFactory;
            ShapedQueryOptimizerFactory = shapedQueryOptimizerFactory;
            ShapedQueryCompilingExpressionVisitorFactory = shapedQueryCompilingExpressionVisitorFactory;
            ContextOptions = contextOptions;
            Logger         = logger;
        }
 /// <summary>
 ///     Clones this dependency parameter object with one service replaced.
 /// </summary>
 /// <param name="shapedQueryCompilingExpressionVisitorFactory"> A replacement for the current dependency of this type. </param>
 /// <returns> A new parameter object with the given service replaced. </returns>
 public QueryCompilationContextDependencies With(
     [NotNull] IShapedQueryCompilingExpressionVisitorFactory shapedQueryCompilingExpressionVisitorFactory)
 => new QueryCompilationContextDependencies(
     Model,
     QueryOptimizerFactory,
     QueryableMethodTranslatingExpressionVisitorFactory,
     ShapedQueryOptimizerFactory,
     shapedQueryCompilingExpressionVisitorFactory,
     CurrentContext,
     ContextOptions,
     Logger);
 /// <summary>
 ///     Clones this dependency parameter object with one service replaced.
 /// </summary>
 /// <param name="shapedQueryCompilingExpressionVisitorFactory"> A replacement for the current dependency of this type. </param>
 /// <returns> A new parameter object with the given service replaced. </returns>
 public QueryCompilationContextDependencies With(
     [NotNull] IShapedQueryCompilingExpressionVisitorFactory shapedQueryCompilingExpressionVisitorFactory)
 => new QueryCompilationContextDependencies(
     Model,
     QueryTranslationPreprocessorFactory,
     QueryableMethodTranslatingExpressionVisitorFactory,
     QueryTranslationPostprocessorFactory,
     shapedQueryCompilingExpressionVisitorFactory,
     _executionStrategyFactory,
     _currentContext,
     ContextOptions,
     Logger);
示例#6
0
 public QueryCompilationContextFactory2(
     IModel model,
     IQueryOptimizerFactory queryOptimizerFactory,
     IEntityQueryableTranslatorFactory entityQueryableTranslatorFactory,
     IQueryableMethodTranslatingExpressionVisitorFactory queryableMethodTranslatingExpressionVisitorFactory,
     IShapedQueryOptimizerFactory shapedQueryOptimizerFactory,
     IShapedQueryCompilingExpressionVisitorFactory shapedQueryCompilingExpressionVisitorFactory,
     ICurrentDbContext currentDbContext)
 {
     _model = model;
     _queryOptimizerFactory            = queryOptimizerFactory;
     _entityQueryableTranslatorFactory = entityQueryableTranslatorFactory;
     _queryableMethodTranslatingExpressionVisitorFactory = queryableMethodTranslatingExpressionVisitorFactory;
     _shapedQueryOptimizerFactory = shapedQueryOptimizerFactory;
     _shapedQueryCompilingExpressionVisitorFactory = shapedQueryCompilingExpressionVisitorFactory;
     _currentDbContext = currentDbContext;
 }
示例#7
0
        public QueryCompilationContext(
            QueryCompilationContextDependencies dependencies,
            bool async)
        {
            IsAsync        = async;
            IsTracking     = dependencies.IsTracking;
            IsBuffering    = dependencies.IsRetryingExecutionStrategy;
            Model          = dependencies.Model;
            ContextOptions = dependencies.ContextOptions;
            ContextType    = dependencies.ContextType;
            Logger         = dependencies.Logger;

            _queryTranslationPreprocessorFactory = dependencies.QueryTranslationPreprocessorFactory;
            _queryableMethodTranslatingExpressionVisitorFactory = dependencies.QueryableMethodTranslatingExpressionVisitorFactory;
            _queryTranslationPostprocessorFactory         = dependencies.QueryTranslationPostprocessorFactory;
            _shapedQueryCompilingExpressionVisitorFactory = dependencies.ShapedQueryCompilingExpressionVisitorFactory;
        }
        public QueryCompilationContext(
            QueryCompilationContextDependencies dependencies,
            bool async)
        {
            var context = dependencies.CurrentContext.Context;

            IsAsync        = async;
            IsTracking     = context.ChangeTracker.QueryTrackingBehavior == QueryTrackingBehavior.TrackAll;
            Model          = dependencies.Model;
            ContextOptions = dependencies.ContextOptions;
            ContextType    = context.GetType();
            Logger         = dependencies.Logger;

            _queryTranslationPreprocessorFactory = dependencies.QueryTranslationPreprocessorFactory;
            _queryableMethodTranslatingExpressionVisitorFactory = dependencies.QueryableMethodTranslatingExpressionVisitorFactory;
            _queryTranslationPostprocessorFactory         = dependencies.QueryTranslationPostprocessorFactory;
            _shapedQueryCompilingExpressionVisitorFactory = dependencies.ShapedQueryCompilingExpressionVisitorFactory;
        }
示例#9
0
 public QueryCompilationContextFactory(
     IModel model,
     IQueryOptimizerFactory queryOptimizerFactory,
     IQueryableMethodTranslatingExpressionVisitorFactory queryableMethodTranslatingExpressionVisitorFactory,
     IShapedQueryOptimizerFactory shapedQueryOptimizerFactory,
     IShapedQueryCompilingExpressionVisitorFactory shapedQueryCompilingExpressionVisitorFactory,
     ICurrentDbContext currentDbContext,
     IDbContextOptions contextOptions,
     IDiagnosticsLogger <DbLoggerCategory.Query> logger)
 {
     _model = model;
     _queryOptimizerFactory = queryOptimizerFactory;
     _queryableMethodTranslatingExpressionVisitorFactory = queryableMethodTranslatingExpressionVisitorFactory;
     _shapedQueryOptimizerFactory = shapedQueryOptimizerFactory;
     _shapedQueryCompilingExpressionVisitorFactory = shapedQueryCompilingExpressionVisitorFactory;
     _currentDbContext = currentDbContext;
     _contextOptions   = contextOptions;
     _logger           = logger;
 }
示例#10
0
 public QueryCompilationContext2(
     IModel model,
     IQueryOptimizerFactory queryOptimizerFactory,
     IEntityQueryableTranslatorFactory entityQuerableTranslatorFactory,
     IQueryableMethodTranslatingExpressionVisitorFactory queryableMethodTranslatingExpressionVisitorFactory,
     IShapedQueryOptimizerFactory shapedQueryOptimizerFactory,
     IShapedQueryCompilingExpressionVisitorFactory shapedQueryCompilingExpressionVisitorFactory,
     ICurrentDbContext currentDbContext,
     bool async)
 {
     Async                             = async;
     TrackQueryResults                 = currentDbContext.Context.ChangeTracker.QueryTrackingBehavior == QueryTrackingBehavior.TrackAll;
     Model                             = model;
     _queryOptimizerFactory            = queryOptimizerFactory;
     _entityQueryableTranslatorFactory = entityQuerableTranslatorFactory;
     _queryableMethodTranslatingExpressionVisitorFactory = queryableMethodTranslatingExpressionVisitorFactory;
     _shapedQueryOptimizerFactory = shapedQueryOptimizerFactory;
     _shapedQueryCompilingExpressionVisitorFactory = shapedQueryCompilingExpressionVisitorFactory;
 }
        /// <summary>
        ///     Creates a new instance of the <see cref="QueryCompilationContext" /> class.
        /// </summary>
        /// <param name="dependencies">Parameter object containing dependencies for this class.</param>
        /// <param name="async">A bool value indicating whether it is for async query.</param>
        public QueryCompilationContext(
            QueryCompilationContextDependencies dependencies,
            bool async)
        {
            Dependencies          = dependencies;
            IsAsync               = async;
            QueryTrackingBehavior = dependencies.QueryTrackingBehavior;
            IsBuffering           = ExecutionStrategy.Current?.RetriesOnFailure ?? dependencies.IsRetryingExecutionStrategy;
            Model          = dependencies.Model;
            ContextOptions = dependencies.ContextOptions;
            ContextType    = dependencies.ContextType;
            Logger         = dependencies.Logger;

            _queryTranslationPreprocessorFactory = dependencies.QueryTranslationPreprocessorFactory;
            _queryableMethodTranslatingExpressionVisitorFactory = dependencies.QueryableMethodTranslatingExpressionVisitorFactory;
            _queryTranslationPostprocessorFactory         = dependencies.QueryTranslationPostprocessorFactory;
            _shapedQueryCompilingExpressionVisitorFactory = dependencies.ShapedQueryCompilingExpressionVisitorFactory;

            _expressionPrinter = new ExpressionPrinter();
        }
示例#12
0
        /// <summary>
        ///     Creates a new instance of the <see cref="QueryCompilationContext" /> class.
        /// </summary>
        /// <param name="dependencies"> Parameter object containing dependencies for this class. </param>
        /// <param name="async"> A bool value indicating whether it is for async query. </param>
        public QueryCompilationContext(
            [NotNull] QueryCompilationContextDependencies dependencies,
            bool async)
        {
            Check.NotNull(dependencies, nameof(dependencies));

            Dependencies          = dependencies;
            IsAsync               = async;
            QueryTrackingBehavior = dependencies.QueryTrackingBehavior;
            IsBuffering           = dependencies.IsRetryingExecutionStrategy;
            Model          = dependencies.Model;
            ContextOptions = dependencies.ContextOptions;
            ContextType    = dependencies.ContextType;
            Logger         = dependencies.Logger;

            _queryTranslationPreprocessorFactory = dependencies.QueryTranslationPreprocessorFactory;
            _queryableMethodTranslatingExpressionVisitorFactory = dependencies.QueryableMethodTranslatingExpressionVisitorFactory;
            _queryTranslationPostprocessorFactory         = dependencies.QueryTranslationPostprocessorFactory;
            _shapedQueryCompilingExpressionVisitorFactory = dependencies.ShapedQueryCompilingExpressionVisitorFactory;
        }