public void ShouldNotBatchWhenOptionSelected()
        {
            var testingDatabaseService = new TestingDatabaseService();

            testingDatabaseService.CreateTestDatabase();

            var dataGateway = new TestingDataGateway(testingDatabaseService);

            dataGateway.DropTable();
            dataGateway.CreateSingleSurrogateKeyTable();

            var dtos = new[]
            {
                new SampleSurrogateKey
                {
                    Pk           = 100,
                    TextValue    = "JJ",
                    IntValue     = 100,
                    DecimalValue = 100.99m
                },
                new SampleSurrogateKey
                {
                    Pk           = 200,
                    TextValue    = "ZZ",
                    IntValue     = 999,
                    DecimalValue = 123.45m
                }
            };

            var sqlBulkCopyUtilitySpy = new SqlBulkCopyUtilitySpy();

            dataGateway.ExecuteWithConnection(conn =>
            {
                new BulkLoader(sqlBulkCopyUtilitySpy)
                .InsertWithOptions("sample", conn, true, dtos)
                .IdentityColumn(c => c.Pk)
                .SetBatchSize(1)
                .NoBatch()
                .Execute();
            });

            sqlBulkCopyUtilitySpy.BulkCopyCalled.Should().Be(1);

            var databaseDtos = dataGateway.GetAllSampleSurrogateKey().ToArray();

            var firstDto = databaseDtos.First(x => x.TextValue == "JJ");

            firstDto.IntValue.Should().Be(100);
            firstDto.DecimalValue.Should().Be(100.99m);

            var secondDto = databaseDtos.First(x => x.TextValue == "ZZ");

            secondDto.IntValue.Should().Be(999);
            secondDto.DecimalValue.Should().Be(123.45m);
        }
Example #2
0
        public void ShouldRespectRenamedFields()
        {
            var testingDatabaseService = new TestingDatabaseService();

            testingDatabaseService.CreateTestDatabase();

            var dataGateway = new TestingDataGateway(testingDatabaseService);

            dataGateway.DropTable();
            dataGateway.CreateSingleSurrogateKeyTable();

            var dtos = new[]
            {
                new SampleSurrogateKeyDifferentNamesDto
                {
                    Pk                = 100,
                    TextValueExtra    = "JJ",
                    IntValueExtra     = 100,
                    DecimalValueExtra = 100.99m
                },
                new SampleSurrogateKeyDifferentNamesDto
                {
                    Pk                = 200,
                    TextValueExtra    = "ZZ",
                    IntValueExtra     = 999,
                    DecimalValueExtra = 123.45m
                }
            };

            dataGateway.ExecuteWithConnection(conn =>
            {
                BulkLoaderFactory.Create()
                .InsertWithOptions("sample", conn, true, dtos)
                .IdentityColumn(c => c.Pk)
                .With(c => c.TextValueExtra, "TextValue")
                .With(c => c.IntValueExtra, "IntValue")
                .With(c => c.DecimalValueExtra, "DecimalValue")
                .Execute();
            });

            var databaseDtos = dataGateway.GetAllSampleSurrogateKey().ToArray();

            var firstDto = databaseDtos.First(x => x.TextValue == "JJ");

            firstDto.Pk.Should().Be(100);
            firstDto.IntValue.Should().Be(100);
            firstDto.DecimalValue.Should().Be(100.99m);

            var secondDto = databaseDtos.First(x => x.TextValue == "ZZ");

            secondDto.Pk.Should().Be(200);
            secondDto.IntValue.Should().Be(999);
            secondDto.DecimalValue.Should().Be(123.45m);
        }
        public void ShouldRespectTheWithoutOption()
        {
            var testingDatabaseService = new TestingDatabaseService();

            testingDatabaseService.CreateTestDatabase();

            var dataGateway = new TestingDataGateway(testingDatabaseService);

            dataGateway.DropTable();
            dataGateway.CreateSingleSurrogateKeyTable();

            var dtos = new[]
            {
                new SampleSurrogateKey()
                {
                    Pk           = 100,
                    TextValue    = "JJ",
                    IntValue     = 100,
                    DecimalValue = 100.99m
                },
                new SampleSurrogateKey
                {
                    Pk           = 200,
                    TextValue    = "ZZ",
                    IntValue     = 999,
                    DecimalValue = 123.45m
                }
            };

            dataGateway.ExecuteWithConnection(conn =>
            {
                BulkLoaderFactory.Create()
                .InsertWithOptions("Sample", conn, true, dtos)
                .Without("DecimalValue")
                .Without(t => t.IntValue)
                .Execute();
            });

            var databaseDtos = dataGateway.GetAllSampleSurrogateKey().ToArray();

            var firstDto = databaseDtos.First(x => x.TextValue == "JJ");

            firstDto.Pk.Should().Be(100);
            firstDto.IntValue.Should().BeNull();
            firstDto.DecimalValue.Should().BeNull();

            var secondDto = databaseDtos.First(x => x.TextValue == "ZZ");

            secondDto.Pk.Should().Be(200);
            secondDto.IntValue.Should().BeNull();
            secondDto.DecimalValue.Should().BeNull();
        }
        public void ShouldNotInsertPrimaryKeyWhenKeepIdentityOptionIsFalse()
        {
            var testingDatabaseService = new TestingDatabaseService();

            testingDatabaseService.CreateTestDatabase();

            var dataGateway = new TestingDataGateway(testingDatabaseService);

            dataGateway.DropTable();
            dataGateway.CreateSingleSurrogateKeyTable();

            var dtos = new[]
            {
                new SampleSurrogateKey
                {
                    Pk           = 100,
                    TextValue    = "JJ",
                    IntValue     = 100,
                    DecimalValue = 100.99m
                },
                new SampleSurrogateKey
                {
                    Pk           = 200,
                    TextValue    = "ZZ",
                    IntValue     = 999,
                    DecimalValue = 123.45m
                }
            };

            dataGateway.ExecuteWithConnection(conn =>
            {
                BulkLoaderFactory.Create()
                .InsertWithOptions("sample", conn, false, dtos)
                .IdentityColumn(c => c.Pk)
                .Execute();
            });

            var databaseDtos = dataGateway.GetAllSampleSurrogateKey().ToArray();

            var firstDto = databaseDtos.First(x => x.TextValue == "JJ");

            firstDto.Pk.Should().NotBe(100);
            firstDto.IntValue.Should().Be(100);
            firstDto.DecimalValue.Should().Be(100.99m);

            var secondDto = databaseDtos.First(x => x.TextValue == "ZZ");

            secondDto.Pk.Should().NotBe(200);
            secondDto.IntValue.Should().Be(999);
            secondDto.DecimalValue.Should().Be(123.45m);
        }
Example #5
0
        public void ShouldUseDefaultBulkCopyUtilityWhenNoConstructorParams()
        {
            var testingDatabaseService = new TestingDatabaseService();

            testingDatabaseService.CreateTestDatabase();

            var dataGateway = new TestingDataGateway(testingDatabaseService);

            dataGateway.DropTable();
            dataGateway.CreateSingleSurrogateKeyTable();

            var dtos = new[]
            {
                new SampleSurrogateKey
                {
                    Pk           = 100,
                    TextValue    = "JJ",
                    IntValue     = 100,
                    DecimalValue = 100.99m
                },
                new SampleSurrogateKey
                {
                    Pk           = 200,
                    TextValue    = "ZZ",
                    IntValue     = 999,
                    DecimalValue = 123.45m
                }
            };

            dataGateway.ExecuteWithConnection(conn =>
            {
                new BulkLoader()
                .InsertWithOptions("sample", conn, true, dtos)
                .IdentityColumn(c => c.Pk)
                .Execute();
            });

            var databaseDtos = dataGateway.GetAllSampleSurrogateKey().ToArray();

            var firstDto = databaseDtos.First(x => x.TextValue == "JJ");

            firstDto.IntValue.Should().Be(100);
            firstDto.DecimalValue.Should().Be(100.99m);

            var secondDto = databaseDtos.First(x => x.TextValue == "ZZ");

            secondDto.IntValue.Should().Be(999);
            secondDto.DecimalValue.Should().Be(123.45m);
        }