예제 #1
0
        protected virtual void Generate([NotNull] DropUniqueConstraintOperation operation, [NotNull] IndentedStringBuilder builder)
        {
            Check.NotNull(operation, nameof(operation));
            Check.NotNull(builder, nameof(builder));

            builder
            .Append(".DropUniqueConstraint(name: ")
            .Append(_code.Literal(operation.Name));

            if (operation.Schema != null)
            {
                builder
                .Append(", schema: ")
                .Append(_code.Literal(operation.Schema));
            }

            builder
            .Append(", table: ")
            .Append(_code.Literal(operation.Table))
            .Append(")");

            using (builder.Indent())
            {
                Annotations(operation.Annotations, builder);
            }
        }
예제 #2
0
        public void Dispatches_visitor()
        {
            var operation = new DropUniqueConstraintOperation("dbo.MyTable", "MyUC");

            var sqlGeneratorMock = new Mock <MigrationOperationSqlGenerator>(new RelationalTypeMapper());
            var builder          = new IndentedStringBuilder();

            operation.GenerateSql(sqlGeneratorMock.Object, builder);

            sqlGeneratorMock.Verify(g => g.Generate(operation, builder), Times.Once());

            var codeGeneratorMock = new Mock <MigrationCodeGenerator>(new Mock <ModelCodeGenerator>().Object);

            builder = new IndentedStringBuilder();
            operation.GenerateCode(codeGeneratorMock.Object, builder);

            codeGeneratorMock.Verify(g => g.Generate(operation, builder), Times.Once());

            var visitorMock = new Mock <MigrationOperationVisitor <object> >();
            var context     = new object();

            operation.Accept(visitorMock.Object, context);

            visitorMock.Verify(v => v.Visit(operation, context), Times.Once());
        }
예제 #3
0
        /// <inheritdoc />
        protected override void Generate(DropUniqueConstraintOperation operation, IModel model, MigrationCommandListBuilder builder)
        {
            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);
                return;
            }

            builder.AppendLine($"IF(OBJECT_ID('{DelimitIdentifier(operation.Name)}') IS NOT NULL)")
            .AppendLine("BEGIN");

            _closeScopeBeforeEndingStatement = true;
            builder.IncrementIndent();

            base.Generate(operation, model, builder);
        }
예제 #4
0
        public void Create_and_initialize_operation()
        {
            var operation = new DropUniqueConstraintOperation("dbo.MyTable", "MyUC");

            Assert.Equal("dbo.MyTable", operation.TableName);
            Assert.Equal("MyUC", operation.UniqueConstraintName);
            Assert.True(operation.IsDestructiveChange);
        }
예제 #5
0
        public override void Visit(DropUniqueConstraintOperation dropUniqueConstraintOperation, DatabaseModel databaseModel)
        {
            Check.NotNull(dropUniqueConstraintOperation, "dropUniqueConstraintOperation");
            Check.NotNull(databaseModel, "databaseModel");

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

            table.RemoveUniqueConstraint(dropUniqueConstraintOperation.UniqueConstraintName);
        }
        public void Generate_when_drop_unique_constraint_operation()
        {
            var operation = new DropUniqueConstraintOperation("dbo.MyTable", "MyUC");

            Assert.Equal(
                @"DropUniqueConstraint(""dbo.MyTable"", ""MyUC"")",
                CSharpMigrationCodeGenerator.Generate(operation));

            GenerateAndValidateCode(operation);
        }
        public virtual void Generate([NotNull] DropUniqueConstraintOperation dropUniqueConstraintOperation, [NotNull] SqlBatchBuilder batchBuilder)
        {
            Check.NotNull(dropUniqueConstraintOperation, "dropUniqueConstraintOperation");
            Check.NotNull(batchBuilder, "batchBuilder");

            batchBuilder
            .Append("ALTER TABLE ")
            .Append(DelimitIdentifier(dropUniqueConstraintOperation.TableName))
            .Append(" DROP CONSTRAINT ")
            .Append(DelimitIdentifier(dropUniqueConstraintOperation.UniqueConstraintName));
        }
    public async Task DropUniqueConstraint()
    {
        var operation = new DropUniqueConstraintOperation()
        {
            Table = "People",
            Name  = "UNQ_People_Foo",
        };
        var batch = await Generate(new[] { operation });

        Assert.AreEqual(1, batch.Count());
        Assert.AreEqual(NewLineEnd(@"ALTER TABLE ""People"" DROP CONSTRAINT ""UNQ_People_Foo"";"), batch[0].CommandText);
    }
예제 #9
0
        public override void Generate(DropUniqueConstraintOperation dropUniqueConstraintOperation, IndentedStringBuilder stringBuilder)
        {
            Check.NotNull(dropUniqueConstraintOperation, "dropUniqueConstraintOperation");
            Check.NotNull(stringBuilder, "stringBuilder");

            stringBuilder
            .Append("DropUniqueConstraint(")
            .Append(GenerateLiteral(dropUniqueConstraintOperation.TableName))
            .Append(", ")
            .Append(GenerateLiteral(dropUniqueConstraintOperation.UniqueConstraintName))
            .Append(")");
        }
예제 #10
0
        public virtual void Generate(
            [NotNull] DropUniqueConstraintOperation operation,
            [CanBeNull] IModel model,
            [NotNull] SqlBatchBuilder builder)
        {
            Check.NotNull(operation, nameof(operation));
            Check.NotNull(builder, nameof(builder));

            builder
            .Append("ALTER TABLE ")
            .Append(_sql.DelimitIdentifier(operation.Table, operation.Schema))
            .Append(" DROP CONSTRAINT ")
            .Append(_sql.DelimitIdentifier(operation.Name));
        }
예제 #11
0
        /// <summary>
        /// 删除唯一键。
        /// </summary>
        /// <typeparam name="TEntity">实体类型。</typeparam>
        /// <param name="columns">列表达式。</param>
        /// <returns>返回迁移实例。</returns>
        public virtual OperationBuilder <DropUniqueConstraintOperation> DropUniqueConstraint <TEntity>(Expression <Func <TEntity, object> > columns)
        {
            Check.NotNull(columns, nameof(columns));

            var operation = new DropUniqueConstraintOperation
            {
                Table = typeof(TEntity).GetTableName()
            };

            operation.Name = OperationHelper.GetName(NameType.UniqueKey, operation.Table, columns.GetPropertyNames());
            Operations.Add(operation);

            return(new OperationBuilder <DropUniqueConstraintOperation>(operation));
        }
예제 #12
0
        /// <summary>
        /// 删除唯一键。
        /// </summary>
        /// <typeparam name="TEntity">实体类型。</typeparam>
        /// <param name="name">名称(全名包含UK_)。</param>
        /// <returns>返回迁移实例。</returns>
        public virtual OperationBuilder <DropUniqueConstraintOperation> DropUniqueConstraint <TEntity>(string name)
        {
            Check.NotNull(name, nameof(name));

            var operation = new DropUniqueConstraintOperation
            {
                Table = typeof(TEntity).GetTableName(),
                Name  = name
            };

            Operations.Add(operation);

            return(new OperationBuilder <DropUniqueConstraintOperation>(operation));
        }
예제 #13
0
        protected virtual void Generate(
            [NotNull] DropUniqueConstraintOperation operation,
            [CanBeNull] IModel model,
            [NotNull] RelationalCommandListBuilder builder)
        {
            Check.NotNull(operation, nameof(operation));
            Check.NotNull(builder, nameof(builder));

            builder
            .Append("ALTER TABLE ")
            .Append(SqlGenerator.DelimitIdentifier(operation.Table, operation.Schema))
            .Append(" DROP CONSTRAINT ")
            .Append(SqlGenerator.DelimitIdentifier(operation.Name));
        }
예제 #14
0
        /// <summary>
        /// 删除唯一键。
        /// </summary>
        /// <param name="operation">操作实例。</param>
        /// <param name="builder"><see cref="MigrationCommandListBuilder"/>实例对象。</param>
        protected virtual void Generate(
            DropUniqueConstraintOperation operation,
            MigrationCommandListBuilder builder)
        {
            Check.NotNull(operation, nameof(operation));
            Check.NotNull(builder, nameof(builder));

            builder
            .Append("ALTER TABLE ")
            .Append(operation.Table)
            .Append(" DROP CONSTRAINT ")
            .Append(operation.Name)
            .AppendLine(SqlHelper.StatementTerminator);

            EndStatement(builder);
        }
예제 #15
0
        public virtual OperationBuilder <DropUniqueConstraintOperation> DropUniqueConstraint(string name, string table, string schema = null)
        {
            Check.NotEmpty(name, nameof(name));
            Check.NotEmpty(table, nameof(table));

            var operation = new DropUniqueConstraintOperation
            {
                Schema = schema,
                Table  = table,
                Name   = name
            };

            Operations.Add(operation);

            return(new OperationBuilder <DropUniqueConstraintOperation>(operation));
        }
        protected virtual void Generate(
            [NotNull] DropUniqueConstraintOperation operation,
            [CanBeNull] IModel model,
            [NotNull] MigrationCommandListBuilder builder)
        {
            Check.NotNull(operation, nameof(operation));
            Check.NotNull(builder, nameof(builder));

            builder
            .Append("ALTER TABLE ")
            .Append(Dependencies.SqlGenerationHelper.DelimitIdentifier(operation.Table, operation.Schema))
            .Append(" DROP CONSTRAINT ")
            .Append(Dependencies.SqlGenerationHelper.DelimitIdentifier(operation.Name))
            .AppendLine(Dependencies.SqlGenerationHelper.StatementTerminator);

            EndStatement(builder);
        }
예제 #17
0
        public void Visit_with_drop_unique_constraint_operation()
        {
            var model  = new DatabaseModel();
            var column = new Column("Foo", typeof(int));
            var table  = new Table("dbo.MyTable", new[] { column });

            table.AddUniqueConstraint(new UniqueConstraint("UC", new[] { column }));

            var operation = new DropUniqueConstraintOperation("dbo.MyTable", "UC");

            model.AddTable(table);

            Assert.Equal(1, table.UniqueConstraints.Count);

            operation.Accept(new DatabaseModelModifier(), model);

            Assert.Equal(0, table.UniqueConstraints.Count);
        }
예제 #18
0
 protected override void Generate(DropUniqueConstraintOperation operation, IModel model, MigrationCommandListBuilder builder)
 {
     throw new NotSupportedException(SqliteStrings.InvalidMigrationOperation(operation.GetType().ShortDisplayName()));
 }
예제 #19
0
 public abstract void Generate([NotNull] DropUniqueConstraintOperation dropUniqueConstraintOperation, [NotNull] IndentedStringBuilder stringBuilder);
 protected override void Generate(DropUniqueConstraintOperation operation, IModel model, MigrationCommandListBuilder builder)
 => base.Generate(operation, model, builder);
 protected override void Generate(DropUniqueConstraintOperation operation, IModel model, SqlBatchBuilder builder)
 {
     throw new NotSupportedException(Strings.InvalidMigrationOperation);
 }
예제 #22
0
 protected override void Generate(DropUniqueConstraintOperation operation, IModel model, RelationalCommandListBuilder builder)
 {
     throw new NotSupportedException(SqliteStrings.InvalidMigrationOperation);
 }