Exemple #1
0
        internal override object Clone(SqlNodeCloneContext context)
        {
            if (context.NodeMapping.ContainsKey(this))
            {
                return(context.NodeMapping[this]);
            }

            SqlInsert clone = new SqlInsert();

            if (Into != null)
            {
                clone.Into = (SqlTableRef)Into.Clone(context);
            }
            if (from != null)
            {
                clone.From = (SqlSelect)from.Clone(context);
            }
            foreach (KeyValuePair <SqlColumn, SqlExpression> p in values)
            {
                clone.Values[(SqlTableColumn)p.Key.Clone(context)] =
                    p.Value.IsNullReference() ? null : (SqlExpression)p.Value.Clone(context);
            }

            if (Hints.Count > 0)
            {
                foreach (SqlHint hint in Hints)
                {
                    clone.Hints.Add((SqlHint)hint.Clone(context));
                }
            }

            context.NodeMapping[this] = clone;
            return(clone);
        }
        internal override object Clone(SqlNodeCloneContext context)
        {
            if (context.NodeMapping.ContainsKey(this))
            {
                return(context.NodeMapping[this]);
            }

            SqlSubQuery        clone;
            SqlSelect          select     = query as SqlSelect;
            SqlQueryExpression expression = query as SqlQueryExpression;

            if (select != null)
            {
                clone = new SqlSubQuery((SqlSelect)select.Clone(context));
            }
            else
            {
                clone = new SqlSubQuery((SqlQueryExpression)expression.Clone(context));
            }
            context.NodeMapping[this] = clone;
            return(clone);
        }