/// <summary> /// 构造函数 /// </summary> public UpdateSqlStatement() : base() { this.UpdateFields = new UpdateFieldList(); this.UpdateValues = new UpdateValueList(); UpdateCondition = new FilterConditionStatement(); }
/// <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); }
/// <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>(); }
/// <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; }