protected override void Generate(
            RenameTableOperation operation,
            IModel model,
            MigrationCommandListBuilder builder)
        {
            Check.NotNull(operation, nameof(operation));
            Check.NotNull(builder, nameof(builder));

            if (operation.NewName != null)
            {
                builder
                .Append("ALTER TABLE ")
                .Append(Dependencies.SqlGenerationHelper.DelimitIdentifier(operation.Name))
                .Append(" RENAME TO ")
                .Append(Dependencies.SqlGenerationHelper.DelimitIdentifier(operation.NewName))
                .EndCommand();
            }

            if (operation.NewSchema != null)
            {
                builder
                .Append("RENAME ")
                .Append(operation.NewSchema)
                .Append(" TO ")
                .Append(operation.Schema)
                .EndCommand();
            }
        }
Exemple #2
0
        protected override void Generate(RenameTableOperation operation, [CanBeNull] IModel model, MigrationCommandListBuilder builder)
        {
            Check.NotNull(operation, nameof(operation));
            Check.NotNull(builder, nameof(builder));

            var name = operation.Name;

            if (operation.NewName != null)
            {
                var qualifiedName = new StringBuilder();
                if (operation.Schema != null)
                {
                    qualifiedName
                    .Append(Dependencies.SqlGenerationHelper.DelimitIdentifier(operation.Schema))
                    .Append(".");
                }
                qualifiedName.Append(Dependencies.SqlGenerationHelper.DelimitIdentifier(operation.Name));

                Rename(qualifiedName.ToString(), Dependencies.SqlGenerationHelper.DelimitIdentifier(operation.NewName), "TABLE", builder);

                name = operation.NewName;
            }

            if (operation.NewSchema != null)
            {
                Transfer(operation.NewSchema, operation.Schema, name, "TABLE", builder);
            }

            EndStatement(builder);
        }
Exemple #3
0
        public void Visit_with_create_table_operation_followed_by_rename_operation_and_table_subordinate_operation()
        {
            var modelBuilder = new BasicModelBuilder();
            var operation
                = new CreateTableOperation(
                      new Table("dbo.T", new[]
            {
                new Column("Id", typeof(int))
            }));
            var moveTableOperation   = new MoveTableOperation("dbo.T", "dbo2");
            var renameTableOperation = new RenameTableOperation("dbo2.T", "T2");
            var addColumnOperation   = new AddColumnOperation("dbo2.T2", new Column("C", typeof(string)));

            var operations = PreProcess(modelBuilder, operation, moveTableOperation, renameTableOperation, addColumnOperation);

            Assert.Equal(1, operations.Count);
            Assert.IsType <CreateTableOperation>(operations[0]);

            var createTableOperation = (CreateTableOperation)operations[0];

            Assert.NotSame(operation, createTableOperation);
            Assert.NotSame(operation.Table, createTableOperation.Table);
            Assert.Equal("dbo2.T2", createTableOperation.Table.Name);
            Assert.Equal(new[] { "Id", "C" }, createTableOperation.Table.Columns.Select(c => c.Name));
            Assert.Equal(new[] { typeof(int), typeof(string) }, createTableOperation.Table.Columns.Select(c => c.ClrType));
        }
        protected override void Generate(RenameTableOperation operation, IModel model, SqlBatchBuilder builder)
        {
            Check.NotNull(operation, nameof(operation));
            Check.NotNull(builder, nameof(builder));

            GenerateRename(operation.Name, operation.Schema, operation.NewName, "OBJECT", builder);
        }
        protected override void Generate(
            RenameTableOperation operation,
            IModel model,
            MigrationCommandListBuilder builder)
        {
            Check.NotNull(operation, nameof(operation));
            Check.NotNull(builder, nameof(builder));

            var name = operation.Name;

            if (operation.NewName != null)
            {
                var qualifiedName = new StringBuilder();
                if (operation.Schema != null)
                {
                    qualifiedName
                    .Append(operation.Schema)
                    .Append(".");
                }
                qualifiedName.Append(operation.Name);

                Rename(qualifiedName.ToString(), operation.NewName, builder);

                name = operation.NewName;
            }

            if (operation.NewSchema != null)
            {
                Transfer(operation.NewSchema, operation.Schema, name, builder);
            }

            builder.EndCommand();
        }
        protected override void Generate(RenameTableOperation operation, IModel model, MigrationCommandListBuilder builder)
        {
            Check.NotNull(operation, nameof(operation));
            Check.NotNull(builder, nameof(builder));

            var separate = false;
            var name     = operation.Name;

            if (operation.NewName != null)
            {
                Rename(operation.Schema, operation.Name, operation.NewName, "TABLE", builder);

                separate = true;
                name     = operation.NewName;
            }

            if (operation.NewSchema != null)
            {
                if (separate)
                {
                    builder.AppendLine(SqlGenerationHelper.BatchTerminator);
                }

                Transfer(operation.NewSchema, operation.Schema, name, "TABLE", builder);
            }
        }
 protected virtual void Generate(
     [NotNull] RenameTableOperation operation,
     [CanBeNull] IModel model,
     [NotNull] MigrationCommandListBuilder builder)
 {
     throw new NotImplementedException();
 }
Exemple #8
0
 private static void WriteRenameTable(RenameTableOperation renameTableOperation, IndentedTextWriter writer)
 {
     writer.Write("RENAME TABLE '");
     writer.Write(renameTableOperation.Name);
     writer.Write("' TO '");
     writer.Write(renameTableOperation.NewName);
     writer.Write("'");
 }
Exemple #9
0
        public void Create_and_initialize_operation()
        {
            var renameTableOperation = new RenameTableOperation("dbo.MyTable", "MyTable2");

            Assert.Equal("dbo.MyTable", renameTableOperation.TableName);
            Assert.Equal("MyTable2", renameTableOperation.NewTableName);
            Assert.False(renameTableOperation.IsDestructiveChange);
        }
Exemple #10
0
        public void Generate_with_rename_table_works()
        {
            var operation = new RenameTableOperation("my.Pegasus", "Pony");

            var sql = Generate(operation);

            Assert.Equal("ALTER TABLE \"my.Pegasus\" RENAME TO \"my.Pony\"", sql);
        }
        protected override void Generate(RenameTableOperation renameTableOperation)
        {
            string oldName = getNameWithReplacedSchema(renameTableOperation.Name);
            string newName = renameTableOperation.NewName.Split('.').Last();
            var    newRenameTableOperation = new RenameTableOperation(oldName, newName, renameTableOperation.AnonymousArguments);

            base.Generate(newRenameTableOperation);
        }
        protected override void Generate(
            RenameTableOperation operation,
            IModel?model,
            MigrationCommandListBuilder builder)
        {
            base.Generate(operation, model, builder);

            ReplaceWriteToEventLogFunctionIfEventLogTableTouched(model, builder, targetTableName: operation.NewName);
        }
        public override void Visit(RenameTableOperation renameTableOperation, DatabaseModel databaseModel)
        {
            Check.NotNull(renameTableOperation, "renameTableOperation");
            Check.NotNull(databaseModel, "databaseModel");

            var table = databaseModel.GetTable(renameTableOperation.TableName);

            table.Name = new SchemaQualifiedName(renameTableOperation.NewTableName, renameTableOperation.TableName.Schema);
        }
        public override void Visit(RenameTableOperation operation, Context context)
        {
            Check.NotNull(operation, "operation");
            Check.NotNull(context, "context");

            var handler = context.EnsureHandler(operation.TableName, supported: true);

            handler.AddOperation(operation);
            handler.TableName = new SchemaQualifiedName(operation.NewTableName, operation.TableName.Schema);
        }
        public void Dispatches_visitor()
        {
            var renameTableOperation = new RenameTableOperation("dbo.MyTable", "MyTable2");
            var mockVisitor          = MigrationsTestHelpers.MockSqlGenerator();
            var builder = new Mock <SqlBatchBuilder>();

            renameTableOperation.GenerateSql(mockVisitor.Object, builder.Object);

            mockVisitor.Verify(g => g.Generate(renameTableOperation, builder.Object), Times.Once());
        }
Exemple #16
0
        private void Generate(RenameTableOperation renameTableOperation)
        {
            ArgumentUtility.CheckNotNull("renameTableOperation", renameTableOperation);

            using (var writer = Writer()) {
                WriteRenameTable(renameTableOperation, writer);

                Statement(writer, true);
            }
        }
        public override void Generate(RenameTableOperation renameTableOperation, IndentedStringBuilder stringBuilder)
        {
            Check.NotNull(renameTableOperation, "renameTableOperation");
            Check.NotNull(stringBuilder, "stringBuilder");

            GenerateRenameTable(
                renameTableOperation.TableName,
                new SchemaQualifiedName(renameTableOperation.NewTableName, renameTableOperation.TableName.Schema),
                stringBuilder);
        }
        public void Generate_when_rename_table_operation()
        {
            var operation = new RenameTableOperation("dbo.MyTable", "MyTable2");

            Assert.Equal(
                @"RenameTable(""dbo.MyTable"", ""MyTable2"")",
                CSharpMigrationCodeGenerator.Generate(operation));

            GenerateAndValidateCode(operation);
        }
        protected override void Generate(RenameTableOperation operation, IModel model, MigrationCommandListBuilder builder)
        {
            System.Console.WriteLine("RENAME TABLE DROP");
            DropPolicy(operation.Schema, operation.Name, builder);

            base.Generate(operation, model, builder);

            System.Console.WriteLine("RENAME TABLE ADD");
            AddPolicy(operation.NewSchema, operation.NewName, builder);
        }
Exemple #20
0
        public void Dispatches_visitor()
        {
            var renameTableOperation = new RenameTableOperation("dbo.MyTable", "MyTable2");
            var mockVisitor          = new Mock <MigrationOperationSqlGenerator>(new RelationalTypeMapper());
            var builder = new Mock <IndentedStringBuilder>();

            renameTableOperation.GenerateSql(mockVisitor.Object, builder.Object);

            mockVisitor.Verify(g => g.Generate(renameTableOperation, builder.Object), Times.Once());
        }
Exemple #21
0
        private void Convert(RenameTableOperation renameTableOperation)
        {
            StringBuilder sql = new StringBuilder();

            sql.Append("ALTER TABLE ");
            AppendTableName(renameTableOperation.Name, sql);
            sql.Append(" RENAME TO ");
            AppendTableName(renameTableOperation.NewName, sql);
            AddStatment(sql);
        }
        public override void Generate([NotNull] RenameTableOperation renameTableOperation, [NotNull] IndentedStringBuilder stringBuilder)
        {
            Check.NotNull(renameTableOperation, "renameTableOperation");

            stringBuilder
            .Append("RenameTable(")
            .Append(GenerateLiteral(renameTableOperation.TableName))
            .Append(", ")
            .Append(GenerateLiteral(renameTableOperation.NewTableName))
            .Append(")");
        }
        public override void Generate(RenameTableOperation renameTableOperation, IndentedStringBuilder stringBuilder)
        {
            Check.NotNull(renameTableOperation, "renameTableOperation");

            stringBuilder
            .Append("EXECUTE sp_rename @objname = N")
            .Append(DelimitLiteral(renameTableOperation.TableName))
            .Append(", @newname = N")
            .Append(DelimitLiteral(renameTableOperation.NewTableName))
            .Append(", @objtype = N'OBJECT'");
        }
Exemple #24
0
        public override void Generate(RenameTableOperation renameTableOperation, IndentedStringBuilder stringBuilder)
        {
            Check.NotNull(renameTableOperation, "renameTableOperation");
            Check.NotNull(stringBuilder, "stringBuilder");

            GenerateRename(
                renameTableOperation.TableName,
                renameTableOperation.NewTableName,
                "OBJECT",
                stringBuilder);
        }
 protected virtual IEnumerable <MigrationStatement> Generate(RenameTableOperation operation)
 {
     using (var writer = SqlWriter())
     {
         writer.Write("RENAME TABLE ");
         writer.Write(Quote(operation.Name));
         writer.Write(" TO ");
         writer.Write(Quote(operation.NewName));
         yield return(Statement(writer));
     }
 }
        public void Visit_with_rename_operation_followed_by_unsupported_subordinate_operation()
        {
            var modelBuilder = new BasicModelBuilder();

            modelBuilder.Entity("T1",
                                b =>
            {
                b.Property <int>("Id");
                b.Key("Id");
            });
            modelBuilder.Entity("T2",
                                b =>
            {
                b.Property <int>("Id");
                b.Property <int>("C");
                b.Key("Id");
                // TODO: SQLite-specific. Issue #875
                b.ForRelational().Table("T", "dbo");
            });

            var moveTableOperation   = new MoveTableOperation("dbo.T", "dbo2");
            var renameTableOperation = new RenameTableOperation("dbo2.T", "T2");
            var addForeignKeyOperation
                = new AddForeignKeyOperation("dbo2.T2", "FK", new[] { "C" }, "T1", new[] { "Id" }, cascadeDelete: true);

            var operations = PreProcess(modelBuilder, moveTableOperation, renameTableOperation, addForeignKeyOperation);

            Assert.Equal(3, operations.Count);
            Assert.IsType <CreateTableOperation>(operations[0]);
            Assert.IsType <CopyDataOperation>(operations[1]);
            Assert.IsType <DropTableOperation>(operations[2]);

            var createTableOperation = (CreateTableOperation)operations[0];

            Assert.Equal("dbo2.T2", createTableOperation.Table.Name);
            Assert.Equal(new[] { "Id", "C" }, createTableOperation.Table.Columns.Select(c => c.Name));
            Assert.Equal(new[] { typeof(int), typeof(int) }, createTableOperation.Table.Columns.Select(c => c.ClrType));
            Assert.Equal(1, createTableOperation.Table.ForeignKeys.Count);
            Assert.Equal("FK", createTableOperation.Table.ForeignKeys[0].Name);
            Assert.Equal("T1", createTableOperation.Table.ForeignKeys[0].ReferencedTable.Name);
            Assert.Equal(new[] { "C" }, createTableOperation.Table.ForeignKeys[0].Columns.Select(c => c.Name));
            Assert.Equal(new[] { "Id" }, createTableOperation.Table.ForeignKeys[0].ReferencedColumns.Select(c => c.Name));

            var copyDataOperation = (CopyDataOperation)operations[1];

            Assert.Equal("dbo.T", copyDataOperation.SourceTableName);
            Assert.Equal(new[] { "Id", "C" }, copyDataOperation.SourceColumnNames);
            Assert.Equal("dbo2.T2", copyDataOperation.TargetTableName);
            Assert.Equal(new[] { "Id", "C" }, copyDataOperation.TargetColumnNames);

            var dropTableOperation = (DropTableOperation)operations[2];

            Assert.Equal("dbo.T", dropTableOperation.TableName);
        }
Exemple #27
0
        public void Generate_can_output_rename_table_statements()
        {
            var renameTableOperation = new RenameTableOperation("dbo.Foo", "Bar");

            var migrationSqlGenerator = new SqlCeMigrationSqlGenerator();

            var sql = migrationSqlGenerator.Generate(new[] { renameTableOperation }, "2008").Join(s => s.Sql, Environment.NewLine);

            Assert.Contains(
                @"EXECUTE sp_rename @objname = N'Foo', @newname = N'Bar', @objtype = N'OBJECT'", sql);
        }
Exemple #28
0
        private string GenerateSqlStatementConcrete(RenameTableOperation migrationOperation)
        {
            var ddlBuilder = new SQLiteDdlBuilder();

            ddlBuilder.AppendSql("ALTER TABLE ");
            ddlBuilder.AppendIdentifier(migrationOperation.Name);
            ddlBuilder.AppendSql(" RENAME TO ");
            ddlBuilder.AppendIdentifier(migrationOperation.NewName);

            return(ddlBuilder.GetCommandText());
        }
Exemple #29
0
        public override void Generate(RenameTableOperation renameTableOperation, SqlBatchBuilder batchBuilder)
        {
            Check.NotNull(renameTableOperation, "renameTableOperation");
            Check.NotNull(batchBuilder, "batchBuilder");

            GenerateRename(
                renameTableOperation.TableName,
                renameTableOperation.NewTableName,
                "OBJECT",
                batchBuilder);
        }
Exemple #30
0
        /// <summary>
        ///     Generates code to perform a <see cref="RenameTableOperation" />.
        /// </summary>
        /// <param name="renameTableOperation"> The operation to generate code for. </param>
        /// <param name="writer"> Text writer to add the generated code to. </param>
        protected virtual void Generate(RenameTableOperation renameTableOperation, IndentedTextWriter writer)
        {
            Check.NotNull(renameTableOperation, "renameTableOperation");
            Check.NotNull(writer, "writer");

            writer.Write("RenameTable(name := ");
            writer.Write(Quote(renameTableOperation.Name));
            writer.Write(", newName := ");
            writer.Write(Quote(renameTableOperation.NewName));
            writer.WriteLine(")");
        }