Exemplo n.º 1
0
        public SqlDbSelectAggregateStrategy(
            DbQueryAggregateMode aggregateMode,
            IDbModelStrategy modelStrategy,
            IEnumerable <DbQueryWhereClause <TModel> > filterExpressions = null,
            DbQueryColumnClause <TModel> columnExpression = null,
            IEnumerable <DbQueryGroupByClause <TModel> > groupBySelector = null) : base(DbQueryStrategyTypes.Select)
        {
            _modelStrategy       = modelStrategy;
            _aggregMode          = aggregateMode;
            _parameterDictionary = new Dictionary <string, object>();

            if (filterExpressions != null)
            {
                _filters = ParseFilters(filterExpressions);
            }
            if (groupBySelector != null)
            {
                _groupBySelectors = ParseGroupByColumns(groupBySelector);
            }

            if (aggregateMode != DbQueryAggregateMode.Any &&
                aggregateMode != DbQueryAggregateMode.Count &&
                aggregateMode != DbQueryAggregateMode.CountBig)
            {
                if (_columns == null)
                {
                    _columns = ParseSelectorToColumn(columnExpression);
                }
            }
        }
Exemplo n.º 2
0
 public SqlDbSelectAggregateStrategy(
     DbQueryAggregateMode aggregateMode,
     Type modelType,
     IDbModelStrategy modelStrategy) : base(modelType)
 {
     _modelStrategy       = modelStrategy;
     _aggregMode          = aggregateMode;
     _parameterDictionary = new Dictionary <string, object>();
 }
Exemplo n.º 3
0
        private object GetDbQueryAggregationValue(DbQueryAggregateMode queryMode, Expression <Func <TModel, object> > columnSpecifier = null, Expression <Func <TModel, object> > specifierExpression = null, Expression <Func <TModel, object> > groupByExpression = null)
        {
            var queryStrategyProvider = _container.Resolve <IDbQueryStrategyProvider>();
            var filterExpressions     = new List <DbQueryWhereClause <TModel> >();
            var groupByExpressions    = new List <DbQueryGroupByClause <TModel> >();

            if (specifierExpression != null)
            {
                filterExpressions.Add(new DbQueryWhereClause <TModel>()
                {
                    Clause   = specifierExpression,
                    Operator = DbQueryConditionOperators.And
                });
            }

            if (groupByExpression != null)
            {
                groupByExpressions.Add(new DbQueryGroupByClause <TModel>()
                {
                    Clause = groupByExpression
                });
            }

            var strategy = queryStrategyProvider.GetSelectAggregationStrategy(
                ModelStrategy,
                queryMode,
                filterExpressions,
                new DbQueryColumnClause <TModel>()
            {
                ColumExpression = columnSpecifier
            },
                groupByExpressions);
            var sql      = strategy.GetDbQueryScript();
            var dbparams = strategy.GetDbParameters().ToList();

            _serviceProvider.Open();

            object value;

            try
            {
                value = _serviceProvider.QueryGetScalar(sql, dbparams);
            }
            catch (Exception exception)
            {
                throw new DbOperationException("ERROR_SQL_EXECUTION_FAILED", exception, sql, dbparams);
            }
            finally
            {
                _serviceProvider.Close();
            }

            return(value);
        }
Exemplo n.º 4
0
        private object GetDbQueryAggregationValue(
            DbQueryAggregateMode queryMode,
            Expression <Func <TModel, object> > columnSpecifier,
            Expression <Func <TModel, object> > conditionExpression = null)
        {
            if (queryMode != DbQueryAggregateMode.Any &&
                queryMode != DbQueryAggregateMode.Count &&
                queryMode != DbQueryAggregateMode.CountBig)
            {
                ParameterChecker.NotNull(columnSpecifier);
            }

            IDbQueryStrategy strategy;
            var filterExpressions = new List <DbQueryWhereClause <TModel> >();

            if (conditionExpression != null)
            {
                filterExpressions.Add(new DbQueryWhereClause <TModel>()
                {
                    Clause   = conditionExpression,
                    Operator = DbQueryConditionOperators.And
                });
            }

            if (columnSpecifier == null)
            {
                strategy = _queryStrategyProvider.GetSelectAggregationStrategy(
                    _queryTable.ModelStrategy,
                    queryMode,
                    (filterExpressions.Any()) ? filterExpressions : _whereClauses
                    );
            }
            else
            {
                var columnExpression = new DbQueryColumnClause <TModel>()
                {
                    ColumExpression = columnSpecifier
                };

                strategy = _queryStrategyProvider.GetSelectAggregationStrategy(
                    _queryTable.ModelStrategy,
                    queryMode,
                    (filterExpressions.Any()) ? filterExpressions : _whereClauses,
                    columnExpression
                    );
            }

            var sql      = strategy.GetDbQueryScript();
            var dbparams = strategy.GetDbParameters();

            _serviceProvider.Open();

            object value;

            try
            {
                value = _serviceProvider.QueryGetScalar(sql, dbparams);
            }
            catch (Exception exception)
            {
                throw new DbOperationException("ERROR_SQL_EXECUTION_FAILED", exception, sql, dbparams);
            }
            finally
            {
                _serviceProvider.Close();
            }

            return(value);
        }
Exemplo n.º 5
0
 public IDbQueryStrategy GetSelectAggregationStrategy(DbQueryAggregateMode mode, Type modelType, IDbModelStrategy modelStrategy)
 {
     return(new SqlDbSelectAggregateStrategy(mode, modelType, modelStrategy));
 }
Exemplo n.º 6
0
 public IDbQueryStrategy GetSelectAggregationStrategy <TModel>(IDbModelStrategy modelStrategy, DbQueryAggregateMode mode, IEnumerable <DbQueryWhereClause <TModel> > dataFilterOperators = null, DbQueryColumnClause <TModel> columnSpecifier = null, IEnumerable <DbQueryGroupByClause <TModel> > groupBySelector = null) where TModel : class, new()
 {
     return(new SqlDbSelectAggregateStrategy <TModel>(mode, modelStrategy, dataFilterOperators, columnSpecifier, groupBySelector));
 }