Example #1
0
        /// <inheritdoc />
        protected override void Generate(DropIndexOperation operation, IModel model, MigrationCommandListBuilder builder, bool terminate)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (operation.IfNotExistsCheckRequired())
            {
                throw new InvalidOperationException($"The check '{nameof(SqlServerOperationBuilderExtensions.IfNotExists)}()' is not allowed with '{operation.GetType().Name}'");
            }

            if (!operation.IfExistsCheckRequired())
            {
                base.Generate(operation, model, builder, terminate);
                return;
            }

            builder.AppendLine($"IF(IndexProperty(OBJECT_ID('{DelimitIdentifier(operation.Table, operation.Schema)}'), {GenerateSqlLiteral(operation.Name)}, 'IndexId') IS NOT NULL)")
            .AppendLine("BEGIN");

            using (builder.Indent())
            {
                base.Generate(operation, model, builder, false);
                builder.AppendLine(Dependencies.SqlGenerationHelper.StatementTerminator);
            }

            builder.AppendLine("END");

            if (terminate)
            {
                builder.EndCommand();
            }
        }
        /// <inheritdoc />
        protected override void Generate(DropIndexOperation operation, IModel model, MigrationCommandListBuilder builder)
        {
            if (!operation.IfExistsCheckRequired())
            {
                base.Generate(operation, model, builder);
                return;
            }

            builder.AppendLine($"IF(IndexProperty(OBJECT_ID('{DelimitIdentifier(operation.Table, operation.Schema)}'), {GenerateSqlLiteral(operation.Name)}, 'IndexId') IS NOT NULL)")
            .AppendLine("BEGIN");

            using (builder.Indent())
            {
                base.Generate(operation, model, builder, false);
                builder.AppendLine(Dependencies.SqlGenerationHelper.StatementTerminator);
            }

            builder.AppendLine("END")
            .EndCommand();
        }