/// <summary> /// Creates a new instance of <see cref="RelationalProjectionExpressionVisitorFactory" />. /// </summary> /// <param name="dependencies"> Parameter object containing dependencies for this service. </param> public RelationalProjectionExpressionVisitorFactory( [NotNull] RelationalProjectionExpressionVisitorDependencies dependencies) { Check.NotNull(dependencies, nameof(dependencies)); Dependencies = dependencies; }
/// <summary> /// Creates a new instance of <see cref="RelationalProjectionExpressionVisitor" />. /// </summary> /// <param name="dependencies"> Parameter object containing dependencies for this service. </param> /// <param name="queryModelVisitor"> The query model visitor. </param> /// <param name="querySource"> The query source. </param> public RelationalProjectionExpressionVisitor( [NotNull] RelationalProjectionExpressionVisitorDependencies dependencies, [NotNull] RelationalQueryModelVisitor queryModelVisitor, [NotNull] IQuerySource querySource) : base(Check.NotNull(queryModelVisitor, nameof(queryModelVisitor))) { Check.NotNull(dependencies, nameof(dependencies)); Check.NotNull(querySource, nameof(querySource)); _sqlTranslatingExpressionVisitorFactory = dependencies.SqlTranslatingExpressionVisitorFactory; _entityMaterializerSource = dependencies.EntityMaterializerSource; _querySource = querySource; _targetSelectExpression = QueryModelVisitor.TryGetQuery(querySource); if (_targetSelectExpression != null) { _groupAggregateTargetSelectExpression = _targetSelectExpression.Clone(); _isGroupAggregate = _querySource.ItemType.IsGrouping() && _targetSelectExpression.GroupBy.Count > 0; if (_isGroupAggregate) { _targetSelectExpression.ClearProjection(); } } }
/// <summary> /// Creates a new instance of <see cref="RelationalProjectionExpressionVisitor" />. /// </summary> /// <param name="dependencies"> Parameter object containing dependencies for this service. </param> /// <param name="queryModelVisitor"> The query model visitor. </param> /// <param name="querySource"> The query source. </param> public RelationalProjectionExpressionVisitor( [NotNull] RelationalProjectionExpressionVisitorDependencies dependencies, [NotNull] RelationalQueryModelVisitor queryModelVisitor, [NotNull] IQuerySource querySource) : base(Check.NotNull(queryModelVisitor, nameof(queryModelVisitor))) { Check.NotNull(dependencies, nameof(dependencies)); Check.NotNull(querySource, nameof(querySource)); _sqlTranslatingExpressionVisitorFactory = dependencies.SqlTranslatingExpressionVisitorFactory; _entityMaterializerSource = dependencies.EntityMaterializerSource; _querySource = querySource; }