public void Can_get_and_set_name_properties() { var moveTableOperation = new MoveTableOperation("dbo.Customers", "crm"); Assert.Equal("dbo.Customers", moveTableOperation.Name); Assert.Equal("crm", moveTableOperation.NewSchema); }
public void Inverse_should_produce_move_table_operation() { var moveTableOperation = new MoveTableOperation("dbo.My.Customers", "crm"); var inverse = (MoveTableOperation)moveTableOperation.Inverse; Assert.Equal("crm.My.Customers", inverse.Name); Assert.Equal("dbo", inverse.NewSchema); }
public void Can_get_and_set_context_key_properties() { var moveTableOperation = new MoveTableOperation("dbo.Customers", "crm") { ContextKey = "foo" }; Assert.Equal("foo", moveTableOperation.ContextKey); }
protected override void Generate(MoveTableOperation moveTableOperation) { if (moveTableOperation == null) { throw new ArgumentNullException("moveTableOperation"); } // turn off clustered index for all PKs (except for migration history) if (!moveTableOperation.CreateTableOperation.Name.Contains("__MigrationHistory")) { moveTableOperation.CreateTableOperation.PrimaryKey.IsClustered = false; } base.Generate(moveTableOperation); }
/// <summary> /// Generates SQL for a <see cref="MoveTableOperation" />. /// Generated SQL should be added using the Statement method. /// </summary> /// <param name="moveTableOperation"> The operation to produce SQL for. </param> protected virtual void Generate(MoveTableOperation moveTableOperation) { Check.NotNull(moveTableOperation, "moveTableOperation"); var newSchema = moveTableOperation.NewSchema ?? "dbo"; if (!newSchema.EqualsIgnoreCase("dbo") && !_generatedSchemas.Contains(newSchema)) { GenerateCreateSchema(newSchema); _generatedSchemas.Add(newSchema); } if (!moveTableOperation.IsSystem) { using (var writer = Writer()) { writer.Write("ALTER SCHEMA "); writer.Write(Quote(newSchema)); writer.Write(" TRANSFER "); writer.Write(Name(moveTableOperation.Name)); Statement(writer); } } else { Debug.Assert(moveTableOperation.CreateTableOperation != null); Debug.Assert(!string.IsNullOrWhiteSpace(moveTableOperation.ContextKey)); using (var writer = Writer()) { writer.Write("IF object_id('"); writer.Write(moveTableOperation.CreateTableOperation.Name); writer.WriteLine("') IS NULL BEGIN"); writer.Indent++; WriteCreateTable(moveTableOperation.CreateTableOperation, writer); writer.WriteLine(); writer.Indent--; writer.WriteLine("END"); writer.Write("INSERT INTO "); writer.WriteLine(Name(moveTableOperation.CreateTableOperation.Name)); writer.Write("SELECT * FROM "); writer.WriteLine(Name(moveTableOperation.Name)); writer.Write("WHERE [ContextKey] = "); writer.WriteLine(Generate(moveTableOperation.ContextKey)); writer.Write("DELETE "); writer.WriteLine(Name(moveTableOperation.Name)); writer.Write("WHERE [ContextKey] = "); writer.WriteLine(Generate(moveTableOperation.ContextKey)); writer.Write("IF NOT EXISTS(SELECT * FROM "); writer.Write(Name(moveTableOperation.Name)); writer.WriteLine(")"); writer.Indent++; writer.Write("DROP TABLE "); writer.Write(Name(moveTableOperation.Name)); writer.Indent--; Statement(writer); } } }
//private void CreateExtension(string exensionName) //{ // //This is compatible only with server 9.1+ // if (serverVersion.Major > 9 || (serverVersion.Major == 9 && serverVersion.Minor >= 1)) // { // if (addedExtensions.Contains(exensionName)) // return; // addedExtensions.Add(exensionName); // AddStatment("CREATE EXTENSION IF NOT EXISTS \"" + exensionName + "\""); // } //} private void Convert(MoveTableOperation moveTableOperation) { StringBuilder sql = new StringBuilder(); var newSchema = moveTableOperation.NewSchema ?? "dbo"; CreateSchema(newSchema); sql.Append("ALTER TABLE "); AppendTableName(moveTableOperation.Name, sql); sql.Append(" SET SCHEMA "); sql.Append(newSchema); AddStatment(sql); }
public void Generate_can_output_move_table_as_system_object_statement() { var createTableOperation = new CreateTableOperation("dbo.History"); createTableOperation.Columns.Add( new ColumnModel(PrimitiveTypeKind.Int32) { Name = "Id", IsNullable = false }); createTableOperation.Columns.Add( new ColumnModel(PrimitiveTypeKind.String) { Name = "Name", IsNullable = false }); var moveTableOperation = new MoveTableOperation("dbo.History", "foo") { IsSystem = true, ContextKey = "MyKey", CreateTableOperation = createTableOperation }; var migrationSqlGenerator = new SqlServerMigrationSqlGenerator(); var sql = migrationSqlGenerator.Generate(new[] { moveTableOperation }, "2008").Join(s => s.Sql, Environment.NewLine); Assert.Contains( @"IF schema_id('foo') IS NULL EXECUTE('CREATE SCHEMA [foo]') IF object_id('dbo.History') IS NULL BEGIN CREATE TABLE [dbo].[History] ( [Id] [int] NOT NULL, [Name] [nvarchar](max) NOT NULL ) END INSERT INTO [dbo].[History] SELECT * FROM [dbo].[History] WHERE [ContextKey] = 'MyKey' DELETE [dbo].[History] WHERE [ContextKey] = 'MyKey' IF NOT EXISTS(SELECT * FROM [dbo].[History]) DROP TABLE [dbo].[History]", sql); }
/// <summary> /// Generates code to perform a <see cref = "MoveTableOperation" />. /// </summary> /// <param name = "moveTableOperation">The operation to generate code for.</param> /// <param name = "writer">Text writer to add the generated code to.</param> protected virtual void Generate(MoveTableOperation moveTableOperation, IndentedTextWriter writer) { Contract.Requires(moveTableOperation != null); Contract.Requires(writer != null); writer.Write("MoveTable(name := "); writer.Write(Quote(moveTableOperation.Name)); writer.Write(", newSchema := "); writer.Write( string.IsNullOrWhiteSpace(moveTableOperation.NewSchema) ? "Nothing" : Quote(moveTableOperation.NewSchema)); writer.WriteLine(")"); }
/// <summary> /// Generates SQL for a <see cref = "MoveTableOperation" />. /// Generated SQL should be added using the Statement method. /// </summary> /// <param name = "moveTableOperation">The operation to produce SQL for.</param> protected virtual void Generate(MoveTableOperation moveTableOperation) { Contract.Requires(moveTableOperation != null); using (var writer = Writer()) { var newSchema = moveTableOperation.NewSchema ?? "dbo"; if (!newSchema.EqualsIgnoreCase("dbo") && !_generatedSchemas.Contains(newSchema)) { GenerateCreateSchema(newSchema); _generatedSchemas.Add(newSchema); } writer.Write("ALTER SCHEMA "); writer.Write(Quote(newSchema)); writer.Write(" TRANSFER "); writer.Write(Name(moveTableOperation.Name)); Statement(writer); } }
protected virtual MigrationStatement Generate(MoveTableOperation op) { return null; // TODO :check if we'll suppport this operation }
protected virtual IEnumerable<MigrationStatement> Generate(MoveTableOperation operation) { throw new NotSupportedException("Moving table is not supported by Firebird."); }
protected override void Generate(MoveTableOperation moveTableOperation) { moveTableOperation.CreateTableOperation.PrimaryKey.IsClustered = false; base.Generate(moveTableOperation); }
/// <inheritdoc /> protected override void Generate(MoveTableOperation moveTableOperation) { }
/// <summary> /// Gera SQL para uma operação <see cref="MoveTableOperation" />. /// </summary> /// <param name="opeMoveTable"> The operation to produce SQL for. </param> protected virtual void Generate(MoveTableOperation opeMoveTable) { //throw new NotSupportedException(); }
/// <summary> /// Generates code to perform a <see cref="MoveTableOperation" />. /// </summary> /// <param name="moveTableOperation"> The operation to generate code for. </param> /// <param name="writer"> Text writer to add the generated code to. </param> protected virtual void Generate(MoveTableOperation moveTableOperation, IndentedTextWriter writer) { Check.NotNull(moveTableOperation, "moveTableOperation"); Check.NotNull(writer, "writer"); writer.Write("MoveTable(name := "); writer.Write(Quote(moveTableOperation.Name)); writer.Write(", newSchema := "); writer.Write( string.IsNullOrWhiteSpace(moveTableOperation.NewSchema) ? "Nothing" : Quote(moveTableOperation.NewSchema)); writer.WriteLine(")"); }
protected override void Generate(MoveTableOperation moveTableOperation, IndentedTextWriter writer) { var move = new MoveTableOperation(TrimSchemaPrefix(moveTableOperation.Name), moveTableOperation.NewSchema); base.Generate(move, writer); }
/// <summary> /// Generates SQL for a <see cref="MoveTableOperation" />. /// Generated SQL should be added using the Statement method. /// </summary> /// <param name="moveTableOperation"> The operation to produce SQL for. </param> protected virtual void Generate(MoveTableOperation moveTableOperation) { }
protected virtual IEnumerable<MigrationStatement> Generate(MoveTableOperation operation) { throw new NotSupportedException("'MoveTableOperation' is not supported."); }
protected override void Generate(MoveTableOperation moveTableOperation, IndentedTextWriter writer) { moveTableOperation.CreateTableOperation.PrimaryKey.IsClustered = false; base.Generate(moveTableOperation, writer); }