/// <summary>
 /// 构造函数
 /// </summary>
 public UpdateSqlStatement()
     : base()
 {
     this.UpdateFields = new UpdateFieldList();
     this.UpdateValues = new UpdateValueList();
     UpdateCondition   = new FilterConditionStatement();
 }
Exemple #2
0
 /// <summary>
 /// 构造函数
 /// </summary>
 public SelectSqlForSubQuery()
     : base()
 {
     From                      = new From();
     MainFromItem              = new FromItem();
     Condition                 = new FilterConditionStatement();
     JoinCondition             = new JoinConditionStatement();
     joinSubQueryConditionItem = new JoinConditionItem();
     //JoinCondition.ChildCollection.Add(this.joinSubQueryConditionItem);
 }
Exemple #3
0
 /// <summary>
 /// 构造函数
 /// </summary>
 public SelectSqlStatement()
     : base()
 {
     From         = new From();
     mainFromItem = new FromItem();
     //From.ChildCollection.Add(mainFromItem);
     SelectList            = new SelectFieldListStatement();
     JoinCondition         = new JoinConditionStatement();
     FilterCondition       = new FilterConditionStatement();
     OrderByCondition      = new ConditionStatement();
     DictFieldAliasMapping = new Dictionary <string, string>();
 }
Exemple #4
0
        /// <summary>
        /// 构造主键的过滤条件。
        /// </summary>
        /// <param name="context">SQL构造上下文信息。</param>
        /// <param name="sqlInfo">SQL拼装的中间变量。</param>
        /// <param name="currentObject">主键过滤条件对应的领域对象</param>
        /// <param name="pkColumnData">主键值Dictionary,Key是ElemetID,Value是列的值。</param>
        /// <param name="IsUseFieldPrefix">是否使用列全名。</param>
        /// <returns>主键过滤条件</returns>
        protected FilterConditionStatement GetPrimaryKeyConditionsEx(SqlBuildingContext context, SqlBuildingInfo sqlInfo,
                                                                     DomainObject currentObject, IDictionary <string, object> pkColumnData, bool IsUseFieldPrefix = false)
        {
            var conditionItem = new FilterConditionStatement();

            foreach (KeyValuePair <string, object> pkdata in pkColumnData)
            {
                var pkElement = currentObject.Elements.FirstOrDefault(i => i.ID == pkdata.Key);
                var pkColumn  = currentObject.DataObject.PKColumns.FirstOrDefault(c => c.ID == pkElement.DataColumnID);

                var  tableName  = context.GetTableName(currentObject.DataObject.ID);
                bool isTextType = DataTypeUtils.IsTextType(pkColumn.DataObjectID);
                if (isTextType)
                {
                    var keyCondition = new KeyValueConditionStatement <string>();
                    keyCondition.Field.FieldName = pkColumn.ColumnName;
                    if (IsUseFieldPrefix)
                    {
                        var sqlTable = this.TryFindAndRegistSqlTable(tableName, tableName, tableName, tableName, sqlInfo);
                        keyCondition.Field.IsUseFieldPrefix = IsUseFieldPrefix;
                        keyCondition.Field.Table            = sqlTable;
                    }
                    keyCondition.Value           = Convert.ToString(pkdata.Value);
                    keyCondition.LogicalOperator = OperatorType.And;
                    conditionItem.ChildCollection.Add(keyCondition);
                }
                else
                {
                    var keyCondition = new KeyValueConditionStatement <long>();
                    keyCondition.Field.FieldName = pkColumn.ColumnName;
                    if (IsUseFieldPrefix)
                    {
                        var sqlTable = this.TryFindAndRegistSqlTable(tableName, tableName, tableName, tableName, sqlInfo);
                        keyCondition.Field.IsUseFieldPrefix = IsUseFieldPrefix;
                        keyCondition.Field.Table            = sqlTable;
                    }
                    keyCondition.Value           = Convert.ToInt64(pkdata.Value);
                    keyCondition.LogicalOperator = OperatorType.And;
                    conditionItem.ChildCollection.Add(keyCondition);
                }
            }

            return(conditionItem);
        }
        public static FilterConditionStatement ParseFiletrClauses(SelectSqlStatement sql, List<FilterClause> filterClauses,
            DomainObject domainObject, DataObject dataObject)
        {
            var filterConditionStatement = new FilterConditionStatement();
            var filterConditions = new List<ConditionStatement>();

            if (filterClauses == null || filterClauses.Count == 0)
                return filterConditionStatement;

            var filterGroups = filterClauses.GroupBy(i => i.FilterField.GroupName);
            if (filterGroups.Count() > 1)
            {
                foreach (var group in filterGroups)
                {
                    var subFilterConditionState = new FilterConditionStatement();
                    foreach (var filter in group)
                    {
                        var conditionStatement = ParseConditionStatement(filter, domainObject, dataObject, sql.SqlBuildingInfo.CurrentSqlTable);

                        subFilterConditionState.ChildCollection.Add(conditionStatement);
                    }

                    filterConditionStatement.ChildCollection.Add(subFilterConditionState);
                }
            }
            else
            {
                foreach (var filter in filterClauses)
                {
                    var conditionStatement = ParseConditionStatement(filter, domainObject, dataObject, sql.SqlBuildingInfo.CurrentSqlTable);
                    filterConditionStatement.ChildCollection.Add(conditionStatement);
                }
            }

            for (int i = 0; i < filterConditionStatement.ChildCollection.Count; i++)
            {
                var conditionStatement = filterConditionStatement.ChildCollection[i] as ConditionStatement;
                conditionStatement.ConditionFieldValue.ConditionFieldName += i;
            }

            return filterConditionStatement;
        }