Example #1
0
        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());
        }
Example #2
0
        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);
        }
Example #5
0
 protected override string CreateDropPrimaryKeyQuery(MetaComparisonTableGroup tableGroup,
                                                     MetaComparisonPrimaryKeyGroup primaryKeyGroup)
 {
     return(null);
 }