Пример #1
0
 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);
     });
 }
Пример #2
0
 /// <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;
 }
Пример #3
0
 /// <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();
 }
Пример #4
0
        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);
        }
Пример #5
0
 /// <summary>
 /// 清空GroupBy子句
 /// </summary>
 public ISqlBuilder ClearGroupBy()
 {
     _groupByClause = CreateGroupByClause();
     return(this);
 }
Пример #6
0
 /// <summary>
 /// 清空GroupBy子句
 /// </summary>
 public void ClearGroupBy()
 {
     _groupByClause = CreateGroupByClause();
 }