コード例 #1
0
 public CollectionParamsQueryExpression(DataFieldInfo fieldInfo, QueryCollectionPredicate predicate, IEnumerable values)
     : base(fieldInfo.TableMapping)
 {
     _fieldInfo = fieldInfo;
     _predicate = predicate;
     _values    = values;
 }
コード例 #2
0
        public override string CreateCollectionParamsQuerySql(object fieldName, QueryCollectionPredicate predicate,
                                                              IEnumerable <string> list)
        {
            if (predicate == QueryCollectionPredicate.In || predicate == QueryCollectionPredicate.NotIn)
            {
                return(base.CreateCollectionParamsQuerySql(fieldName, predicate, list));
            }

            var op = GetQueryCollectionPredicate(predicate);

            var i  = 0;
            var sb = new StringBuilder();

            sb.AppendFormat("{0} {1} (", fieldName, op);
            foreach (var item in list)
            {
                if (i > 0)
                {
                    sb.Append(" union all ");
                }
                sb.AppendFormat("select {0}", item);
                i++;
            }

            sb.Append(")");
            return(sb.ToString());
        }
コード例 #3
0
        internal override string CreateSqlString(CommandFactory factory, bool isFullName, CreateSqlState state)
        {
            string sql = state.GetDataSql(this, isFullName);

            if (sql != null)
            {
                return(sql);
            }

            string tableName   = factory.CreateDataTableMappingSql(TableMapping, state);
            string selectField = _selectField.CreateSqlString(factory, true, state);

            string field = _field.CreateSqlString(factory, isFullName, state);

            string query = null;

            if (_expression != null)
            {
                query = _expression.CreateSqlString(factory, true, state);
            }
            QueryCollectionPredicate op = _isTrue ? QueryCollectionPredicate.In : QueryCollectionPredicate.NotIn;

            sql = factory.CreateSubQuerySql(field, op, selectField, tableName, query);

            state.SetDataSql(this, isFullName, sql);
            return(sql);
        }
コード例 #4
0
 public CollectionParamsAggregateExpression(AggregateFunction function, QueryCollectionPredicate predicate, IEnumerable values)
     : base(function.TableMapping)
 {
     _function  = function;
     _predicate = predicate;
     _values    = values;
 }
コード例 #5
0
 public LightSubQueryDataFieldInfo(DataEntityMapping mapping, DataFieldInfo field, DataFieldInfo selectField, QueryCollectionPredicate predicate, QueryExpression expression)
     : base(mapping)
 {
     _field       = field;
     _selectField = selectField;
     _predicate   = predicate;
     _expression  = expression;
 }
コード例 #6
0
 public SubAggregateExpression(AggregateFunction function, QueryCollectionPredicate predicate, DataFieldInfo queryFieldInfo, QueryExpression queryExpression)
     : base(function.TableMapping)
 {
     _function        = function;
     _predicate       = predicate;
     _queryFieldInfo  = queryFieldInfo;
     _queryExpression = queryExpression;
 }
コード例 #7
0
 public SubQueryExpression(DataFieldInfo fieldInfo, QueryCollectionPredicate predicate, DataFieldInfo queryFieldInfo, QueryExpression queryExpression)
     : base(fieldInfo.TableMapping)
 {
     _fieldInfo       = fieldInfo;
     _predicate       = predicate;
     _queryFieldInfo  = queryFieldInfo;
     _queryExpression = queryExpression;
 }
コード例 #8
0
        private AggregateHavingExpression CollectionParams(QueryCollectionPredicate predicate, System.Collections.IEnumerable values)
        {
            if (Object.Equals(values, null))
            {
                throw new ArgumentNullException("values");
            }
            AggregateHavingExpression exp = new CollectionParamsAggregateExpression(this, predicate, values);

            return(exp);
        }
コード例 #9
0
 string GetQueryCollectionPredicate(QueryCollectionPredicate predicate)
 {
     if (_queryCollectionPredicateDict.ContainsKey(predicate))
     {
         return(_queryCollectionPredicateDict [predicate]);
     }
     else
     {
         throw new LightDataException(string.Format(RE.UnSupportPredicate, predicate));
     }
 }
コード例 #10
0
        public virtual string CreateSubQuerySql(string fieldName, QueryCollectionPredicate predicate, string queryfieldName, string queryTableName, string whereString)
        {
            StringBuilder sb = new StringBuilder();
            string        op = GetQueryCollectionPredicate(predicate);

            sb.AppendFormat("{0} {3} (select {1} from {2}", fieldName, queryfieldName, queryTableName, op);
            if (!string.IsNullOrEmpty(whereString))
            {
                sb.AppendFormat(" where {0}", whereString);
            }
            sb.Append(")");
            return(sb.ToString());
        }
コード例 #11
0
        private AggregateHavingExpression CollectionParams(QueryCollectionPredicate predicate, DataFieldInfo field, QueryExpression expression)
        {
            if (Object.Equals(field, null))
            {
                throw new ArgumentNullException("field");
            }
            if (expression == null)
            {
                throw new ArgumentNullException("expression");
            }
            if (!expression.IgnoreConsistency && !field.TableMapping.Equals(expression.TableMapping))
            {
                throw new LightDataException(RE.DataMappingIsNotMatchQueryExpression);
            }
            AggregateHavingExpression exp = new SubAggregateExpression(this, predicate, field, expression);

            return(exp);
        }
コード例 #12
0
        public virtual string CreateCollectionParamsQuerySql(string fieldName, QueryCollectionPredicate predicate, List <DataParameter> dataParameters)
        {
            string op = GetQueryCollectionPredicate(predicate);

            if (dataParameters.Count == 0)
            {
                throw new LightDataException(RE.EnumerableLengthNotAllowIsZero);
            }
            int           i  = 0;
            StringBuilder sb = new StringBuilder();

            sb.AppendFormat("{0} {1} (", fieldName, op);
            foreach (DataParameter dataParameter in dataParameters)
            {
                if (i > 0)
                {
                    sb.Append(",");
                }
                sb.Append(dataParameter.ParameterName);
                i++;
            }
            sb.Append(")");
            return(sb.ToString());
        }