protected virtual void Generate( [NotNull] CreateTableOperation operation, [CanBeNull] IModel model, [NotNull] RelationalCommandListBuilder builder) { Check.NotNull(operation, nameof(operation)); Check.NotNull(builder, nameof(builder)); builder .Append("CREATE TABLE ") .Append(SqlGenerator.DelimitIdentifier(operation.Name, operation.Schema)) .AppendLine(" ("); using (builder.Indent()) { for (var i = 0; i < operation.Columns.Count; i++) { var column = operation.Columns[i]; ColumnDefinition(column, model, builder); if (i != operation.Columns.Count - 1) { builder.AppendLine(","); } } if (operation.PrimaryKey != null) { builder.AppendLine(","); PrimaryKeyConstraint(operation.PrimaryKey, model, builder); } foreach (var uniqueConstraint in operation.UniqueConstraints) { builder.AppendLine(","); UniqueConstraint(uniqueConstraint, model, builder); } foreach (var foreignKey in operation.ForeignKeys) { builder.AppendLine(","); ForeignKeyConstraint(foreignKey, model, builder); } builder.AppendLine(); } builder.Append(")"); }
protected override void Generate(RenameSequenceOperation operation, IModel model, RelationalCommandListBuilder builder) { Check.NotNull(operation, nameof(operation)); Check.NotNull(builder, nameof(builder)); var separate = false; 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); separate = true; name = operation.NewName; } if (operation.NewSchema != null) { if (separate) { builder.AppendLine(SqlGenerationHelper.StatementTerminator); } Transfer(operation.NewSchema, operation.Schema, name, builder); } }
protected override void Generate(RenameTableOperation operation, IModel model, RelationalCommandListBuilder 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.StatementTerminator); } Transfer(operation.NewSchema, operation.Schema, name, "TABLE", builder); } }
protected override void Generate(AlterColumnOperation operation, IModel model, RelationalCommandListBuilder builder) { Check.NotNull(operation, nameof(operation)); Check.NotNull(builder, nameof(builder)); builder .EndCommand() .Append("ALTER TABLE ") .Append(SqlGenerationHelper.DelimitIdentifier(operation.Table)) .Append(" ALTER COLUMN ") .Append(SqlGenerationHelper.DelimitIdentifier(operation.Name)) .Append(" DROP DEFAULT") .AppendLine(); builder .EndCommand() .Append("ALTER TABLE ") .Append(SqlGenerationHelper.DelimitIdentifier(operation.Table)) .Append(" ALTER COLUMN "); ColumnDefinition( null, operation.Table, operation.Name, operation.ClrType, operation.ColumnType, operation.IsNullable, null /*operation.DefaultValue */, null /*operation.DefaultValueSql */, operation.ComputedColumnSql, operation, model, builder); builder.AppendLine(); if ((operation.DefaultValue != null) || (operation.DefaultValueSql != null)) { builder .EndCommand() .Append("ALTER TABLE ") .Append(SqlGenerationHelper.DelimitIdentifier(operation.Table)) .Append(" ALTER COLUMN ") .Append(SqlGenerationHelper.DelimitIdentifier(operation.Name)) .Append(" SET "); DefaultValue(operation.DefaultValue, operation.DefaultValueSql, builder); } }
public virtual IReadOnlyList <IRelationalCommand> Generate( IReadOnlyList <MigrationOperation> operations, IModel model = null) { Check.NotNull(operations, nameof(operations)); var builder = new RelationalCommandListBuilder(_commandBuilderFactory); foreach (var operation in operations) { Generate(operation, model, builder); builder .AppendLine(SqlGenerator.BatchCommandSeparator) .EndCommand(); } return(builder.GetCommands()); }
protected override void Generate( AlterColumnOperation operation, IModel model, RelationalCommandListBuilder builder) { Check.NotNull(operation, nameof(operation)); Check.NotNull(builder, nameof(builder)); DropDefaultConstraint(operation.Schema, operation.Table, operation.Name, builder); builder .Append("ALTER TABLE ") .Append(SqlGenerationHelper.DelimitIdentifier(operation.Table, operation.Schema)) .Append(" ALTER COLUMN "); ColumnDefinition( operation.Schema, operation.Table, operation.Name, operation.ClrType, operation.ColumnType, operation.IsNullable, /*defaultValue:*/ null, /*defaultValueSql:*/ null, operation.ComputedColumnSql, /*identity:*/ false, operation, model, builder); if ((operation.DefaultValue != null) || (operation.DefaultValueSql != null)) { builder .AppendLine(";") .Append("ALTER TABLE ") .Append(SqlGenerationHelper.DelimitIdentifier(operation.Table, operation.Schema)) .Append(" ADD"); DefaultValue(operation.DefaultValue, operation.DefaultValueSql, builder); builder .Append(" FOR ") .Append(SqlGenerationHelper.DelimitIdentifier(operation.Name)); } }