public void ShouldAllowForSqlKeyWordsAsFieldNames() { var helper = new MergeQueryObjectTestHelper(); helper.DataService.DropTable(); helper.DataService.CreateCompositeKeyTableWithSqlKeyWords(); var dtos = new[] { new SampleCompositeKeyWithKeyWordsDto { Exec = 1, Pk2 = "A", Drop = new DateTime(2020, 3, 1), From = "jv", } }; var request = new MergeRequest <SampleCompositeKeyWithKeyWordsDto> { DataToMerge = dtos, TargetTableName = "dbo.Sample", UseRealTempTable = false, PrimaryKeyExpression = t => new object[] { t.Exec, t.Pk2 }, KeepPrimaryKeyInInsertStatement = true, WhenNotMatchedDeleteBehavior = DeleteBehavior.Delete }; helper.DataService.Merge(request); var sampleDtos = helper .DataService .GetAllSampleDtos <SampleCompositeKeyWithKeyWordsDto>().ToArray(); var firstDto = sampleDtos.First(x => x.Exec == 1); firstDto.Pk2.Should().Be("A"); firstDto.Drop.Should().Be(new DateTime(2020, 3, 1)); firstDto.From.Should().Be("jv"); }
public void ShouldAllowForSqlKeyWordsInFilter() { var helper = new MergeQueryObjectTestHelper(); helper.DataService.DropTable(); helper.DataService.CreateCompositeKeyTableWithSqlKeyWords(); var dtosSetup = new[] { new SampleCompositeKeyWithKeyWordsDto { Exec = 2, Pk2 = "B", Drop = new DateTime(2020, 4, 1), From = "jv", } }; var requestSetup = new MergeRequest <SampleCompositeKeyWithKeyWordsDto> { DataToMerge = dtosSetup, TargetTableName = "dbo.Sample", UseRealTempTable = false, PrimaryKeyExpression = t => new object[] { t.Exec, t.Pk2 }, KeepPrimaryKeyInInsertStatement = true, WhenNotMatchedDeleteBehavior = DeleteBehavior.None }; helper.DataService.Merge(requestSetup); var dtos = new[] { new SampleCompositeKeyWithKeyWordsDto { Exec = 1, Pk2 = "A", Drop = new DateTime(2020, 3, 1), From = "jv", } }; var startFilter = new DateTime(2020, 3, 1); var endFilter = new DateTime(2020, 3, 31); var request = new MergeRequest <SampleCompositeKeyWithKeyWordsDto> { DataToMerge = dtos, TargetTableName = "dbo.Sample", UseRealTempTable = false, PrimaryKeyExpression = t => new object[] { t.Exec, t.Pk2 }, KeepPrimaryKeyInInsertStatement = true, TargetDataSetFilter = t => t.Drop >= startFilter && t.Drop <= endFilter, WhenNotMatchedDeleteBehavior = DeleteBehavior.Delete }; helper.DataService.Merge(request); var sampleDtos = helper .DataService .GetAllSampleDtos <SampleCompositeKeyWithKeyWordsDto>().ToArray(); sampleDtos.Length.Should().Be(2); var firstDto = sampleDtos.First(x => x.Exec == 1); firstDto.Pk2.Should().Be("A"); firstDto.Drop.Should().Be(new DateTime(2020, 3, 1)); firstDto.From.Should().Be("jv"); var secondDtoNotDeletedByFilter = sampleDtos.First(x => x.Exec == 2); secondDtoNotDeletedByFilter.Pk2.Should().Be("B"); secondDtoNotDeletedByFilter.Drop.Should().Be(new DateTime(2020, 4, 1)); secondDtoNotDeletedByFilter.From.Should().Be("jv"); }
public void BasicUsageControllingBulkLoadOperation() { var helper = new MergeQueryObjectTestHelper(); helper.DataService.DropTable(); helper.DataService.CreateSingleSurrogateKeyTable(); helper.DataService.Insert(new SampleSurrogateKey { Pk = 1, TextValue = "JJ", IntValue = 1, DecimalValue = 1 }); var dtos = new[] { new SampleSurrogateKeyDifferentNamesDto { Pk = 1, TextValueExtra = "JJ", IntValueExtra = 100, DecimalValueExtra = 100.99m }, new SampleSurrogateKeyDifferentNamesDto { Pk = 0, TextValueExtra = "BB", IntValueExtra = 200, DecimalValueExtra = 200.99m } }; var request = new MergeRequest <SampleSurrogateKeyDifferentNamesDto> { DataToMerge = dtos, TargetTableName = "dbo.Sample", UseRealTempTable = false, PrimaryKeyExpression = t => new object[] { t.Pk }, KeepPrimaryKeyInInsertStatement = false, WhenNotMatchedDeleteBehavior = DeleteBehavior.Delete, OnMergeUpdateActive = true, OnMergeInsertActive = true, BulkLoaderOptions = t => t.With(c => c.TextValueExtra, "TextValue") .With(c => c.IntValueExtra, "IntValue") .With(c => c.DecimalValueExtra, "DecimalValue") }; helper.DataService.Merge(request); var sampleDtos = helper .DataService .GetAllSampleDtos <SampleSurrogateKey>() .ToArray(); sampleDtos.Length.Should().Be(2); var firstDto = sampleDtos.First(x => x.TextValue == "JJ"); firstDto.Pk.Should().BeGreaterThan(0); firstDto.IntValue.Should().Be(100); firstDto.DecimalValue.Should().Be(100.99m); var secondDto = sampleDtos.First(x => x.TextValue == "BB"); secondDto.Pk.Should().BeGreaterThan(0); secondDto.IntValue.Should().Be(200); secondDto.DecimalValue.Should().Be(200.99m); }
public void BasicUsageSimpleMerge() { var helper = new MergeQueryObjectTestHelper(); helper.DataService.DropTable(); helper.DataService.CreateSingleSurrogateKeyTable(); helper.DataService.Insert(new SampleSurrogateKey { Pk = 1, TextValue = "JJ", IntValue = 1, DecimalValue = 1 }); var dtos = new[] { new SampleSurrogateKey { Pk = 1, TextValue = "JJ", IntValue = 100, DecimalValue = 100.99m }, new SampleSurrogateKey { Pk = 0, TextValue = "BB", IntValue = 200, DecimalValue = 200.99m } }; var request = new MergeRequest <SampleSurrogateKey> { DataToMerge = dtos, TargetTableName = "dbo.Sample", UseRealTempTable = false, PrimaryKeyExpression = t => new object[] { t.Pk }, KeepPrimaryKeyInInsertStatement = false }; helper.DataService.Merge(request); var sampleDtos = helper .DataService .GetAllSampleDtos <SampleSurrogateKey>() .ToArray(); sampleDtos.Length.Should().Be(2); var firstDto = sampleDtos.First(x => x.TextValue == "JJ"); firstDto.Pk.Should().BeGreaterThan(0); firstDto.IntValue.Should().Be(100); firstDto.DecimalValue.Should().Be(100.99m); var secondDto = sampleDtos.First(x => x.TextValue == "BB"); secondDto.Pk.Should().BeGreaterThan(0); secondDto.IntValue.Should().Be(200); secondDto.DecimalValue.Should().Be(200.99m); }