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); } } }
public SqlDbSelectAggregateStrategy( DbQueryAggregateMode aggregateMode, Type modelType, IDbModelStrategy modelStrategy) : base(modelType) { _modelStrategy = modelStrategy; _aggregMode = aggregateMode; _parameterDictionary = new Dictionary <string, object>(); }
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); }
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); }
public IDbQueryStrategy GetSelectAggregationStrategy(DbQueryAggregateMode mode, Type modelType, IDbModelStrategy modelStrategy) { return(new SqlDbSelectAggregateStrategy(mode, modelType, modelStrategy)); }
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)); }