protected override string CreateCreatePrimaryKeyQuery(MetaComparisonTableGroup tableGroup, MetaComparisonPrimaryKeyGroup primaryKeyGroup) { var requiredTable = (MetaTable)tableGroup.RequiredItem; var primaryKey = (MetaPrimaryKey)primaryKeyGroup.RequiredItem; var sb = new StringBuilder(); sb.Append("ALTER TABLE ["); sb.Append(requiredTable.Name); sb.Append("] ADD CONSTRAINT "); sb.Append(primaryKey.Name); sb.Append(" PRIMARY KEY ( "); bool first = true; foreach (String columnName in primaryKey.ColumnNames) { if (!first) { sb.Append(" ,\n "); } else { first = false; } sb.Append(columnName); sb.Append(" "); } sb.Append(")"); return(sb.ToString()); }
protected override string CreateDropPrimaryKeyQuery(MetaComparisonTableGroup tableGroup , MetaComparisonPrimaryKeyGroup primaryKeyGroup) { var requiredTable = (MetaTable)tableGroup.ExistingItem; var primaryKey = (MetaColumn)primaryKeyGroup.ExistingItem; var sb = new StringBuilder(); sb.Append("ALTER TABLE "); sb.Append(requiredTable.Name); sb.Append(" DROP PRIMARY KEY"); return(sb.ToString()); }
protected abstract string CreateDropPrimaryKeyQuery(MetaComparisonTableGroup tableGroup, MetaComparisonPrimaryKeyGroup primaryKeyGroup);
public ICollection <MetaQueryHolder> CreateDbPathSql(IMetaComparisonGroup metaComparisonGroup) { List <MetaQueryHolder> holders = new List <MetaQueryHolder>(); if (metaComparisonGroup is MetaComparisonTableGroup) { MetaComparisonTableGroup tableGroup = (MetaComparisonTableGroup)metaComparisonGroup; if (metaComparisonGroup.ShouldCreateInDb()) { string query = CreateCreateTableQuery(tableGroup); if (!string.IsNullOrEmpty(query)) { holders.Add(new MetaQueryHolder(MetaQueryHolder.OBJECT_TYPE_TABLE, MetaQueryHolder.OPERATION_TYPE_ADD, query)); } } if (metaComparisonGroup.ShouldDeleteFromDb()) { string query = CreateDropTableQuery(tableGroup); if (!string.IsNullOrEmpty(query)) { holders.Add(new MetaQueryHolder(MetaQueryHolder.OBJECT_TYPE_TABLE, MetaQueryHolder.OPERATION_TYPE_DELETE, query)); } } if (metaComparisonGroup.ShouldAlterInDb()) { string query = CreateAlterTableQuery(tableGroup); if (!string.IsNullOrEmpty(query)) { holders.Add(new MetaQueryHolder(MetaQueryHolder.OBJECT_TYPE_TABLE, MetaQueryHolder.OPERATION_TYPE_ALTER, query)); } } if (tableGroup.PrimaryKey != null) { MetaComparisonPrimaryKeyGroup primaryKeyGroup = tableGroup.PrimaryKey; if (primaryKeyGroup.ShouldCreateInDb() || primaryKeyGroup.ShouldAlterInDb()) { string query = CreateCreatePrimaryKeyQuery(tableGroup, primaryKeyGroup); if (!string.IsNullOrEmpty(query)) { holders.Add(new MetaQueryHolder(MetaQueryHolder.OBJECT_TYPE_PRIMARY_KEY, MetaQueryHolder.OPERATION_TYPE_ADD, query)); } } if (tableGroup.ShouldDeleteFromDb() || primaryKeyGroup.ShouldAlterInDb()) { string query = CreateDropPrimaryKeyQuery(tableGroup, primaryKeyGroup); if (!string.IsNullOrEmpty(query)) { holders.Add(new MetaQueryHolder(MetaQueryHolder.OBJECT_TYPE_PRIMARY_KEY, MetaQueryHolder.OPERATION_TYPE_DELETE, query)); } } } foreach (MetaComparisonColumnGroup comparisonColumnGroup in tableGroup.Columns) { if (comparisonColumnGroup.ShouldCreateInDb()) { string query = CreateCreateColumnQuery(tableGroup, comparisonColumnGroup); if (!string.IsNullOrEmpty(query)) { holders.Add(new MetaQueryHolder(MetaQueryHolder.OBJECT_TYPE_COLUMN, MetaQueryHolder.OPERATION_TYPE_ADD, query)); } } if (comparisonColumnGroup.ShouldDeleteFromDb()) { string query = CreateDropColumnQuery(tableGroup, comparisonColumnGroup); if (!string.IsNullOrEmpty(query)) { holders.Add(new MetaQueryHolder(MetaQueryHolder.OBJECT_TYPE_COLUMN, MetaQueryHolder.OPERATION_TYPE_DELETE, query)); } } if (comparisonColumnGroup.ShouldAlterInDb()) { string query = CreateAlterColumnQuery(tableGroup, comparisonColumnGroup); if (!string.IsNullOrEmpty(query)) { holders.Add(new MetaQueryHolder(MetaQueryHolder.OBJECT_TYPE_COLUMN, MetaQueryHolder.OPERATION_TYPE_ALTER, query)); } } } foreach (MetaComparisonForeignKeyGroup foreignKeyGroup in tableGroup.ForeignKeys) { if (foreignKeyGroup.ShouldCreateInDb() || foreignKeyGroup.ShouldAlterInDb()) { string query = CreateCreateForeginKeyQuery(tableGroup, foreignKeyGroup); if (!string.IsNullOrEmpty(query)) { holders.Add(new MetaQueryHolder(MetaQueryHolder.OBJECT_TYPE_FOREIGN_KEY, MetaQueryHolder.OPERATION_TYPE_ADD, query)); } } if (tableGroup.ShouldDeleteFromDb() || foreignKeyGroup.ShouldAlterInDb()) { string query = CreateDropForeignKeyQuery(tableGroup, foreignKeyGroup); if (!string.IsNullOrEmpty(query)) { holders.Add(new MetaQueryHolder(MetaQueryHolder.OBJECT_TYPE_FOREIGN_KEY, MetaQueryHolder.OPERATION_TYPE_DELETE, query)); } } } } return(holders); }
protected override string CreateDropPrimaryKeyQuery(MetaComparisonTableGroup tableGroup, MetaComparisonPrimaryKeyGroup primaryKeyGroup) { return(null); }