public void SqlBatchBuilder_correctly_produces_multiple_batches()
        {
            var batchBuilder = new SqlBatchBuilder();
            batchBuilder.AppendLine("Statement1");
            batchBuilder.EndBatch();
            batchBuilder.AppendLine("Statement2");
            batchBuilder.AppendLine("Statement3");
            batchBuilder.EndBatch();
            batchBuilder.AppendLine("Statement4");
            batchBuilder.AppendLine("Statement5");
            batchBuilder.AppendLine("Statement6");
            batchBuilder.EndBatch();

            Assert.Equal(3, batchBuilder.SqlBatches.Count);

            Assert.Equal(
                @"Statement1
", batchBuilder.SqlBatches[0].Sql);

            Assert.Equal(
                @"Statement2
Statement3
", batchBuilder.SqlBatches[1].Sql);

            Assert.Equal(
                @"Statement4
Statement5
Statement6
", batchBuilder.SqlBatches[2].Sql);
        }
Beispiel #2
0
        public void SqlBatchBuilder_correctly_produces_multiple_batches()
        {
            var batchBuilder = new SqlBatchBuilder();

            batchBuilder.AppendLine("Statement1");
            batchBuilder.EndBatch();
            batchBuilder.AppendLine("Statement2");
            batchBuilder.AppendLine("Statement3");
            batchBuilder.EndBatch();
            batchBuilder.AppendLine("Statement4");
            batchBuilder.AppendLine("Statement5");
            batchBuilder.AppendLine("Statement6");
            batchBuilder.EndBatch();

            Assert.Equal(3, batchBuilder.SqlBatches.Count);

            Assert.Equal(
                @"Statement1
", batchBuilder.SqlBatches[0].Sql);

            Assert.Equal(
                @"Statement2
Statement3
", batchBuilder.SqlBatches[1].Sql);

            Assert.Equal(
                @"Statement4
Statement5
Statement6
", batchBuilder.SqlBatches[2].Sql);
        }
Beispiel #3
0
        public void SqlBatchBuilder_correctly_splits_statements_to_multiple_batches_when_transaction_is_suppressed()
        {
            var batchBuilder = new SqlBatchBuilder();

            batchBuilder.AppendLine("Statement1");
            batchBuilder.AppendLine("Statement2");
            batchBuilder.AppendLine("Statement3", suppressTransaction: true);
            batchBuilder.AppendLine("Statement4");
            batchBuilder.AppendLine("Statement5");
            batchBuilder.AppendLine("Statement6", suppressTransaction: true);
            batchBuilder.AppendLine("Statement7", suppressTransaction: true);
            batchBuilder.EndBatch();

            Assert.Equal(2, batchBuilder.SqlBatches.Count);
            Assert.False(batchBuilder.SqlBatches[0].SuppressTransaction);
            Assert.Equal(
                @"Statement1
Statement2
", batchBuilder.SqlBatches[0].Sql);

            Assert.True(batchBuilder.SqlBatches[1].SuppressTransaction);
            Assert.Equal(
                @"Statement3
Statement4
Statement5
Statement6
Statement7
", batchBuilder.SqlBatches[1].Sql);
        }
Beispiel #4
0
        private static string GenerateDataType <T>(bool isKey = false, bool isConcurrencyToken = false)
        {
            var targetModel        = new Model();
            var targetModelBuilder = new BasicModelBuilder(targetModel);

            targetModelBuilder.Entity("E",
                                      b =>
            {
                b.Property <T>("P");
                if (isKey)
                {
                    b.Key("P");
                }
                if (isConcurrencyToken)
                {
                    b.Property <T>("P").Metadata.IsConcurrencyToken = true;
                }
            });

            var property     = targetModel.GetEntityType("E").GetProperty("P");
            var batchBuilder = new SqlBatchBuilder();

            SqlGenerator(targetModel).GenerateColumnType(
                new SchemaQualifiedName(
                    property.EntityType.SqlServer().Table,
                    property.EntityType.SqlServer().Schema),
                OperationFactory().Column(property),
                batchBuilder);

            batchBuilder.EndBatch();

            return(string.Join(Environment.NewLine, batchBuilder.SqlBatches.Select(b => b.Sql)));
        }
Beispiel #5
0
        public override void Generate(DropDatabaseOperation dropDatabaseOperation, SqlBatchBuilder batchBuilder)
        {
            batchBuilder
            .Append("IF SERVERPROPERTY('EngineEdition') <> 5 EXECUTE sp_executesql N")
            .Append(
                GenerateLiteral(
                    string.Concat(
                        "ALTER DATABASE ",
                        DelimitIdentifier(dropDatabaseOperation.DatabaseName),
                        " SET SINGLE_USER WITH ROLLBACK IMMEDIATE")));

            batchBuilder.EndBatch();

            base.Generate(dropDatabaseOperation, batchBuilder);

            batchBuilder.EndBatch();
        }
Beispiel #6
0
        public override void Generate(CreateDatabaseOperation createDatabaseOperation, SqlBatchBuilder batchBuilder)
        {
            base.Generate(createDatabaseOperation, batchBuilder);

            batchBuilder.EndBatch();

            batchBuilder
            .Append("IF SERVERPROPERTY('EngineEdition') <> 5 EXECUTE sp_executesql N")
            .Append(
                GenerateLiteral(
                    string.Concat(
                        "ALTER DATABASE ",
                        DelimitIdentifier(createDatabaseOperation.DatabaseName),
                        " SET READ_COMMITTED_SNAPSHOT ON")));

            batchBuilder.EndBatch();
        }
        public virtual IEnumerable <SqlBatch> Generate([NotNull] MigrationOperation operation)
        {
            Check.NotNull(operation, "operation");

            var batchBuilder = new SqlBatchBuilder();

            operation.GenerateSql(this, batchBuilder);
            batchBuilder.EndBatch();

            return(batchBuilder.SqlBatches);
        }
        public void SqlBatchBuilder_ignores_empty_batches()
        {
            var batchBuilder = new SqlBatchBuilder();
            batchBuilder.AppendLine("Statement1");
            batchBuilder.EndBatch();
            batchBuilder.EndBatch();
            batchBuilder.EndBatch();
            batchBuilder.AppendLine("Statement2");
            batchBuilder.AppendLine("Statement3");
            batchBuilder.EndBatch();
            batchBuilder.EndBatch();

            Assert.Equal(2, batchBuilder.SqlBatches.Count);

            Assert.Equal(
                @"Statement1
", batchBuilder.SqlBatches[0].Sql);

            Assert.Equal(
                @"Statement2
Statement3
", batchBuilder.SqlBatches[1].Sql);
        }
        public void SqlBatchBuilder_correctly_groups_multiple_statements_into_one_batch()
        {
            var batchBuilder = new SqlBatchBuilder();
            batchBuilder.AppendLine("Statement1");
            batchBuilder.AppendLine("Statement2");
            batchBuilder.AppendLine("Statement3");
            batchBuilder.EndBatch();

            Assert.Equal(1, batchBuilder.SqlBatches.Count);
            Assert.Equal(
                @"Statement1
Statement2
Statement3
", batchBuilder.SqlBatches[0].Sql);
        }
Beispiel #10
0
        public void SqlBatchBuilder_ignores_empty_batches()
        {
            var batchBuilder = new SqlBatchBuilder();

            batchBuilder.AppendLine("Statement1");
            batchBuilder.EndBatch();
            batchBuilder.EndBatch();
            batchBuilder.EndBatch();
            batchBuilder.AppendLine("Statement2");
            batchBuilder.AppendLine("Statement3");
            batchBuilder.EndBatch();
            batchBuilder.EndBatch();

            Assert.Equal(2, batchBuilder.SqlBatches.Count);

            Assert.Equal(
                @"Statement1
", batchBuilder.SqlBatches[0].Sql);

            Assert.Equal(
                @"Statement2
Statement3
", batchBuilder.SqlBatches[1].Sql);
        }
Beispiel #11
0
        public void SqlBatchBuilder_correctly_groups_multiple_statements_into_one_batch()
        {
            var batchBuilder = new SqlBatchBuilder();

            batchBuilder.AppendLine("Statement1");
            batchBuilder.AppendLine("Statement2");
            batchBuilder.AppendLine("Statement3");
            batchBuilder.EndBatch();

            Assert.Equal(1, batchBuilder.SqlBatches.Count);
            Assert.Equal(
                @"Statement1
Statement2
Statement3
", batchBuilder.SqlBatches[0].Sql);
        }
        public virtual IReadOnlyList <SqlBatch> Generate(
            IReadOnlyList <MigrationOperation> operations,
            IModel model = null)
        {
            Check.NotNull(operations, nameof(operations));

            var builder = new SqlBatchBuilder();

            foreach (var operation in operations)
            {
                Generate(operation, model, builder);
                builder.AppendLine(Sql.BatchCommandSeparator);
            }

            builder.EndBatch();

            return(builder.SqlBatches);
        }
        public virtual IEnumerable <SqlBatch> Generate([NotNull] IEnumerable <MigrationOperation> migrationOperations)
        {
            Check.NotNull(migrationOperations, "migrationOperations");

            var batchBuilder            = new SqlBatchBuilder();
            var migrationOperationsList = migrationOperations.ToList();

            for (var i = 0; i < migrationOperationsList.Count; i++)
            {
                if (i > 0)
                {
                    batchBuilder.AppendLine(StatementSeparator);
                }

                migrationOperationsList[i].GenerateSql(this, batchBuilder);
            }

            batchBuilder.EndBatch();

            return(batchBuilder.SqlBatches);
        }
        public void SqlBatchBuilder_correctly_splits_statements_to_multiple_batches_when_transaction_is_suppressed()
        {
            var batchBuilder = new SqlBatchBuilder();
            batchBuilder.AppendLine("Statement1");
            batchBuilder.AppendLine("Statement2");
            batchBuilder.AppendLine("Statement3", suppressTransaction: true);
            batchBuilder.AppendLine("Statement4");
            batchBuilder.AppendLine("Statement5");
            batchBuilder.AppendLine("Statement6", suppressTransaction: true);
            batchBuilder.AppendLine("Statement7", suppressTransaction: true);
            batchBuilder.EndBatch();

            Assert.Equal(2, batchBuilder.SqlBatches.Count);
            Assert.False(batchBuilder.SqlBatches[0].SuppressTransaction);
            Assert.Equal(
                @"Statement1
Statement2
", batchBuilder.SqlBatches[0].Sql);

            Assert.True(batchBuilder.SqlBatches[1].SuppressTransaction);
            Assert.Equal(
                @"Statement3
Statement4
Statement5
Statement6
Statement7
", batchBuilder.SqlBatches[1].Sql);
        }