internal GroupByClause(ISelectQuery selectQuery, IGroupByClause clone, Dictionary <ICloneableElement, ICloneableElement> objectTree, Predicate <ICloneableElement> doClone) : base(selectQuery) { clone.Items.ForEach( node => { var value = (IQueryExpression)node.Value.Clone(objectTree, doClone); Items.AddLast(value); }); }
/// <summary> /// 克隆 /// </summary> /// <param name="sqlBuilder">源生成器</param> protected void Clone(SqlBuilderBase sqlBuilder) { EntityMatedata = sqlBuilder.EntityMatedata; _parameterManager = sqlBuilder._parameterManager?.Clone(); EntityResolver = sqlBuilder.EntityResolver ?? new EntityResolver(EntityMatedata); AliasRegister = sqlBuilder.AliasRegister?.Clone() ?? new EntityAliasRegister(); _selectClause = sqlBuilder._selectClause?.Clone(this, AliasRegister); _fromClause = sqlBuilder._fromClause?.Clone(AliasRegister); _joinClause = sqlBuilder._joinClause?.Clone(this, AliasRegister); _whereClause = sqlBuilder._whereClause?.Clone(AliasRegister, _parameterManager); _groupByClause = sqlBuilder._groupByClause?.Clone(AliasRegister); _orderByClause = sqlBuilder._orderByClause?.Clone(AliasRegister); _pager = sqlBuilder._pager; }
/// <summary> /// 复制Sql生成器 /// </summary> /// <param name="sqlBuilder">源生成器</param> protected void Clone(SqlBuilderBase sqlBuilder) { EntityMatedata = sqlBuilder.EntityMatedata; _parameterManager = sqlBuilder._parameterManager?.Clone(); EntityResolver = sqlBuilder.EntityResolver ?? new EntityResolver(EntityMatedata); AliasRegister = sqlBuilder.AliasRegister?.Clone() ?? new EntityAliasRegister(); _selectClause = sqlBuilder._selectClause?.Clone(this, AliasRegister); _fromClause = sqlBuilder._fromClause?.Clone(this, AliasRegister); _joinClause = sqlBuilder._joinClause?.Clone(this, AliasRegister, _parameterManager); _whereClause = sqlBuilder._whereClause?.Clone(this, AliasRegister, _parameterManager); _groupByClause = sqlBuilder._groupByClause?.Clone(AliasRegister); _orderByClause = sqlBuilder._orderByClause?.Clone(AliasRegister); Pager = sqlBuilder.Pager; OffsetParam = sqlBuilder.OffsetParam; LimitParam = sqlBuilder.LimitParam; UnionItems = sqlBuilder.UnionItems.Select(t => new BuilderItem(t.Name, t.Builder.Clone())).ToList(); CteItems = sqlBuilder.CteItems.Select(t => new BuilderItem(t.Name, t.Builder.Clone())).ToList(); }
public void Init( IInsertClause insert, IUpdateClause update, IDeleteClause delete, ISelectClause select, IFromClause from, IWhereClause where, IGroupByClause groupBy, IWhereClause having, IOrderByClause orderBy, LinkedList <IUnion> unions, ISelectQuery parentSelect, ICreateTableStatement createTable, bool parameterDependent, List <ISqlParameter> parameters) { Insert = insert; Update = update; Delete = delete; Select = select; From = from; Where = where; GroupBy = groupBy; Having = having; OrderBy = orderBy; Unions = unions; ParentSelect = parentSelect; CreateTable = createTable; IsParameterDependent = parameterDependent; Parameters.AddRange(parameters); foreach (var col in select.Columns) { col.Parent = this; } Select.SetSqlQuery(this); From.SetSqlQuery(this); Where.SetSqlQuery(this); GroupBy.SetSqlQuery(this); Having.SetSqlQuery(this); OrderBy.SetSqlQuery(this); }
/// <summary> /// 清空GroupBy子句 /// </summary> public ISqlBuilder ClearGroupBy() { _groupByClause = CreateGroupByClause(); return(this); }
/// <summary> /// 清空GroupBy子句 /// </summary> public void ClearGroupBy() { _groupByClause = CreateGroupByClause(); }