protected override void Generate(RenameIndexOperation operation, IModel model, RelationalCommandListBuilder builder) { Check.NotNull(operation, nameof(operation)); Check.NotNull(builder, nameof(builder)); if (operation.NewName != null) { Rename(operation.Schema, operation.Name, operation.NewName, "INDEX", builder); } }
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) { Rename(operation.Schema, operation.Name, operation.NewName, "SEQUENCE", builder); separate = true; name = operation.NewName; } if (operation.NewSchema != null) { if (separate) { builder.AppendLine(SqlGenerationHelper.StatementTerminator); } Transfer(operation.NewSchema, operation.Schema, name, "SEQUENCE", builder); } }
protected override void Generate(AlterColumnOperation operation, IModel model, RelationalCommandListBuilder builder) { }
protected override void Generate(CreateSequenceOperation operation, IModel model, RelationalCommandListBuilder builder) { Check.NotNull(operation, nameof(operation)); Check.NotNull(builder, nameof(builder)); if (operation.ClrType != typeof(long)) { throw new NotSupportedException("PostgreSQL sequences can only be bigint (long)"); } builder .Append("CREATE SEQUENCE ") .Append(SqlGenerationHelper.DelimitIdentifier(operation.Name, operation.Schema)); builder .Append(" START WITH ") .Append(SqlGenerationHelper.GenerateLiteral(operation.StartValue)); SequenceOptions(operation, model, builder); }
protected override void Generate(EnsureSchemaOperation operation, IModel model, RelationalCommandListBuilder builder) { }
protected override void Generate(RenameIndexOperation operation, IModel model, RelationalCommandListBuilder builder) { }
protected override void IndexTraits(MigrationOperation operation, IModel model, RelationalCommandListBuilder builder) { Check.NotNull(operation, nameof(operation)); Check.NotNull(builder, nameof(builder)); var clustered = operation[SqlServerAnnotationNames.Prefix + SqlServerAnnotationNames.Clustered] as bool?; if (clustered.HasValue) { builder.Append(clustered.Value ? "CLUSTERED " : "NONCLUSTERED "); } }
protected override void ForeignKeyAction(ReferentialAction referentialAction, RelationalCommandListBuilder builder) { Check.NotNull(builder, nameof(builder)); if (referentialAction == ReferentialAction.Restrict) { builder.Append("NO ACTION"); } else { base.ForeignKeyAction(referentialAction, builder); } }
protected virtual void Rename( [NotNull] string name, [NotNull] string newName, [NotNull] RelationalCommandListBuilder builder) => Rename(name, newName, /*type:*/ null, builder);
protected override void Generate(EnsureSchemaOperation operation, IModel model, RelationalCommandListBuilder builder) { Check.NotNull(operation, nameof(operation)); Check.NotNull(builder, nameof(builder)); if (string.Equals(operation.Name, "DBO", StringComparison.OrdinalIgnoreCase)) { return; } builder .Append("IF SCHEMA_ID(N") .Append(SqlGenerator.GenerateLiteral(operation.Name)) .Append(") IS NULL EXEC(N'CREATE SCHEMA ") .Append(SqlGenerator.DelimitIdentifier(operation.Name)) .Append("')"); }
protected override void Generate(CreateIndexOperation operation, IModel model, RelationalCommandListBuilder builder) { base.Generate(operation, model, builder); var clustered = operation[SqlServerAnnotationNames.Prefix + SqlServerAnnotationNames.Clustered] as bool?; if (operation.IsUnique && clustered != true) { builder.Append(" WHERE "); for (var i = 0; i < operation.Columns.Length; i++) { if (i != 0) { builder.Append(" AND "); } builder .Append(SqlGenerator.DelimitIdentifier(operation.Columns[i])) .Append(" IS NOT NULL"); } } }
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(SqlGenerator.BatchCommandSeparator); } Transfer(operation.NewSchema, operation.Schema, name, builder); } }
protected virtual void IndexTraits( [NotNull] MigrationOperation operation, [CanBeNull] IModel model, [NotNull] RelationalCommandListBuilder builder) { }