internal static void FixIndexReferences(IIndex indexToCopyInto, IIndex indexToCopyFrom)
 {
     // Fix Column references
     foreach (var col in indexToCopyFrom.Columns)
     {
         indexToCopyInto.AddColumn(col.Name);
     }
 }
        protected override void RunOperationInternal()
        {
            var newTable = Object.Clone();

            if (newTable.IsView)
            {
                Database.AddView(newTable);
            }
            else
            {
                Database.AddTable(newTable);
            }

            foreach (IColumn col in Object.Columns)
            {
                newTable.AddColumn(col.Clone());
            }

            foreach (IKey key in Object.Keys)
            {
                IKey newKey = newTable.AddKey(key.Clone());
                newKey.Parent = newTable;

                foreach (var column in key.Columns)
                {
                    newKey.AddColumn(column.Name);
                }
            }

            foreach (IIndex index in Object.Indexes)
            {
                IIndex newIndex = newTable.AddIndex(index.Clone());
                newIndex.Parent = newTable;

                foreach (var column in index.Columns)
                {
                    newIndex.AddColumn(column.Name);
                }
            }
        }