public void Delete(int index) { ITablePart part = (ITablePart)this[index]; RemoveAt(index); if (!part.IsNew()) { Deleted.Add((T)part); } }
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()); }
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()); }