Beispiel #1
0
        public void WithDeltaDestination(IConnectionManager connection)
        {
            //Arrange
            TwoColumnsTableFixture s2c = new TwoColumnsTableFixture(connection, "DBMergeSource");

            s2c.InsertTestData();
            s2c.InsertTestDataSet2();
            TwoColumnsTableFixture d2c = new TwoColumnsTableFixture(connection, "DBMergeDestination");

            d2c.InsertTestDataSet3();
            TwoColumnsDeltaTableFixture delta2Columns = new TwoColumnsDeltaTableFixture(connection, "DBMergeDelta");

            DBSource <MySimpleRow> source = new DBSource <MySimpleRow>(connection, "DBMergeSource");

            //Act
            DBMerge <MySimpleRow>       merge = new DBMerge <MySimpleRow>(connection, "DBMergeDestination");
            DBDestination <MySimpleRow> delta = new DBDestination <MySimpleRow>(connection, "DBMergeDelta");

            source.LinkTo(merge);
            merge.LinkTo(delta);
            source.Execute();
            merge.Wait();
            delta.Wait();

            //Assert
            Assert.Equal(6, RowCountTask.Count(connection, "DBMergeDestination", $"{d2c.QB}Col1{d2c.QE} BETWEEN 1 AND 7 AND {d2c.QB}Col2{d2c.QE} LIKE 'Test%'"));
            Assert.Equal(7, RowCountTask.Count(connection, "DBMergeDelta", $"{d2c.QB}Col1{d2c.QE} BETWEEN 1 AND 10 AND {d2c.QB}Col2{d2c.QE} LIKE 'Test%'"));
            Assert.Equal(1, RowCountTask.Count(connection, "DBMergeDelta", $"{d2c.QB}ChangeAction{d2c.QE} = 'D' AND {d2c.QB}Col1{d2c.QE} = 10"));
            Assert.Equal(3, RowCountTask.Count(connection, "DBMergeDelta", $"{d2c.QB}ChangeAction{d2c.QE} = 'U' AND {d2c.QB}Col1{d2c.QE} IN (1,2,4)"));
            Assert.Equal(3, RowCountTask.Count(connection, "DBMergeDelta", $"{d2c.QB}ChangeAction{d2c.QE} = 'I' AND {d2c.QB}Col1{d2c.QE} IN (3,5,6)"));
        }
        public void DBMergeWithDeltaDestination()
        {
            CreateSourceTable();
            CreateDestinationTable();

            SqlTask.ExecuteNonQuery("Create delta table", @"CREATE TABLE test.Delta
                (ColKey int not null, ColValue nvarchar(30) null,
                    ChangeDate datetime null, ChangeAction char(1) not null)");


            DBSource <MySimpleRow>      source = new DBSource <MySimpleRow>("test.Source");
            DBMerge <MySimpleRow>       merge  = new DBMerge <MySimpleRow>("test.Destination");
            DBDestination <MySimpleRow> dest   = new DBDestination <MySimpleRow>("test.Delta");

            source.LinkTo(merge);
            merge.LinkTo(dest);
            source.Execute();
            merge.Wait();
            dest.Wait();
            //dest.Wait();
        }