//RenameSpecificObject

        public static void RenameObject(this IAlterProcessor proc, DatabaseObjectInfo obj, DbDiffOptions opts, NameWithSchema newName)
        {
            bool renameOk = false;
            //var dom = obj as IDomainStructure;
            //if (dom != null)
            //{
            //    renameOk = DbDiffTool.GenerateRename(dom.FullName, newName,
            //        (old, sch) => proc.ChangeDomainSchema(old, sch),
            //        (old, nam) => proc.RenameDomain(old, nam),
            //        proc.AlterCaps.ChangeTableSchema, proc.AlterCaps.RenameDomain, opts);
            //}
            var tbl = obj as TableInfo;

            if (tbl != null)
            {
                renameOk = DbDiffTool.GenerateRename(tbl.FullName, newName,
                                                     (old, sch) => proc.ChangeTableSchema(new TableInfo(null)
                {
                    FullName = old
                }, sch),
                                                     (old, nam) => proc.RenameTable(new TableInfo(null)
                {
                    FullName = old
                }, nam),
                                                     proc.AlterCaps.ChangeTableSchema, proc.AlterCaps.RenameTable, opts);
            }
            var col = obj as ColumnInfo;

            if (col != null)
            {
                if (proc.AlterCaps.RenameColumn)
                {
                    proc.RenameColumn(col, newName.Name);
                    renameOk = true;
                }
            }
            var cnt = obj as ConstraintInfo;

            if (cnt != null)
            {
                if (proc.AlterCaps.RenameConstraint)
                {
                    proc.RenameConstraint(cnt, newName.Name);
                    renameOk = true;
                }
            }
            var spec = obj as SpecificObjectInfo;

            if (spec != null)
            {
                renameOk = DbDiffTool.GenerateRenameSpecificObject(spec, newName,
                                                                   (old, sch) => proc.ChangeSpecificObjectSchema(old, sch),
                                                                   (old, nam) => proc.RenameSpecificObject(old, nam),
                                                                   proc.AlterCaps.GetSpecificObjectCaps(spec.ObjectType).ChangeSchema, proc.AlterCaps.GetSpecificObjectCaps(spec.ObjectType).Rename, opts);
            }
            if (!renameOk)
            {
                throw new AlterNotPossibleError();
            }
        }
Exemplo n.º 2
0
        public static void RenameObject(this IAlterProcessor proc, IAbstractObjectStructure obj, DbDiffOptions opts, NameWithSchema newName)
        {
            bool renameOk = false;
            var  dom      = obj as IDomainStructure;

            if (dom != null)
            {
                renameOk = DbDiffTool.GenerateRename(dom.FullName, newName,
                                                     (old, sch) => proc.ChangeDomainSchema(old, sch),
                                                     (old, nam) => proc.RenameDomain(old, nam),
                                                     proc.AlterCaps.ChangeTableSchema, proc.AlterCaps.RenameDomain, opts);
            }
            var tbl = obj as ITableStructure;

            if (tbl != null)
            {
                renameOk = DbDiffTool.GenerateRename(tbl.FullName, newName,
                                                     (old, sch) => proc.ChangeTableSchema(old, sch),
                                                     (old, nam) => proc.RenameTable(old, nam),
                                                     proc.AlterCaps.ChangeTableSchema, proc.AlterCaps.RenameTable, opts);
            }
            var col = obj as IColumnStructure;

            if (col != null)
            {
                if (proc.AlterCaps.RenameColumn)
                {
                    proc.RenameColumn(col, newName.Name);
                    renameOk = true;
                }
            }
            var cnt = obj as IConstraint;

            if (cnt != null)
            {
                if (proc.AlterCaps.RenameConstraint)
                {
                    proc.RenameConstraint(cnt, newName.Name);
                    renameOk = true;
                }
            }
            var spec = obj as ISpecificObjectStructure;

            if (spec != null)
            {
                renameOk = DbDiffTool.GenerateRenameSpecificObject(spec, newName,
                                                                   (old, sch) => proc.ChangeSpecificObjectSchema(old, sch),
                                                                   (old, nam) => proc.RenameSpecificObject(old, nam),
                                                                   proc.AlterCaps[spec.ObjectType].ChangeSchema, proc.AlterCaps[spec.ObjectType].Rename, opts);
            }
            if (!renameOk)
            {
                throw new AlterNotPossibleError();
            }
        }