예제 #1
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(
            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;

            _expressionPrinter = new ExpressionPrinter();
        }
        public QueryCompilationContext(
            IModel model,
            IQueryOptimizerFactory queryOptimizerFactory,
            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;
            _queryableMethodTranslatingExpressionVisitorFactory = queryableMethodTranslatingExpressionVisitorFactory;
            _shapedQueryOptimizerFactory = shapedQueryOptimizerFactory;
            _shapedQueryCompilingExpressionVisitorFactory = shapedQueryCompilingExpressionVisitorFactory;
        }