예제 #1
0
        public void Delete(int index)
        {
            ITablePart part = (ITablePart)this[index];

            RemoveAt(index);
            if (!part.IsNew())
            {
                Deleted.Add((T)part);
            }
        }
예제 #2
0
        string ITablePart.GetSql(bool newTable)
        {
            StringBuilder sql = new StringBuilder();

            // if we don't have any changes then just return null
            ITablePart part = this as ITablePart;

            if (!part.HasChanges())
            {
                return(null);
            }

            if (!newTable)
            {
                if (!String.IsNullOrEmpty(oldIndex.Name))
                {
                    sql.AppendFormat("DROP INDEX `{0}`, ", oldIndex.Name);
                }
                sql.Append("ADD ");
            }
            if (IsPrimary)
            {
                sql.Append("PRIMARY KEY ");
            }
            else if (IsUnique)
            {
                sql.Append("UNIQUE ");
            }
            else if (FullText)
            {
                sql.Append("FULLTEXT ");
            }
            else if (Spatial)
            {
                sql.Append("SPATIAL ");
            }

            if (!IsPrimary)
            {
                sql.AppendFormat("{0} ", Type.ToString().ToUpperInvariant());
            }
            sql.AppendFormat("`{0}` (", Name);
            string delimiter = "";

            foreach (IndexColumn c in Columns)
            {
                sql.AppendFormat("{0}{1}", delimiter, c.ColumnName);
                delimiter = ", ";
            }
            sql.Append(")");

            return(sql.ToString());
        }
예제 #3
0
        public string GetSql(bool newTable)
        {
            List <string> parts = new List <string>();

            if (!newTable)
            {
                foreach (ITablePart part in Deleted)
                {
                    parts.Add(part.GetDropSql());
                }
            }

            // process new columns
            for (int i = 0; i < Count; i++)
            {
                ITablePart part    = (ITablePart)this[i];
                string     partSql = part.GetSql(newTable);
                if (!String.IsNullOrEmpty(partSql))
                {
                    if (part is Column && !newTable)
                    {
                        if (i == 0)
                        {
                            partSql += " FIRST";
                        }
                        else if (i < Count - 1)
                        {
                            Column c = this[i - 1] as Column;
                            partSql += String.Format(" AFTER {0}", c.ColumnName);
                        }
                    }
                    parts.Add(partSql);
                }
            }

            string        delimiter = "";
            StringBuilder sql       = new StringBuilder();

            foreach (string s in parts)
            {
                sql.AppendFormat("{0}{1}", delimiter, s);
                delimiter = ", ";
            }
            return(sql.ToString());
        }