System.Data.Tests.DataSetTest2.Merge_ByDataRowsPreserveMissingSchema C# (CSharp) Method

Merge_ByDataRowsPreserveMissingSchema() private method

private Merge_ByDataRowsPreserveMissingSchema ( ) : void
return void
        public void Merge_ByDataRowsPreserveMissingSchema()
        {
            DataTable dt = DataProvider.CreateParentDataTable();
            dt.TableName = "Table1";
            dt.PrimaryKey = new DataColumn[] { dt.Columns[0] };

            //create target dataset (copy of source dataset)
            DataSet dsTarget = new DataSet();
            dsTarget.Tables.Add(dt.Copy());

            //add new column (for checking MissingSchemaAction)
            DataColumn dc = new DataColumn("NewColumn", typeof(float));
            dt.Columns.Add(dc);

            DataRow[] drArr = new DataRow[3];

            //Update row
            string OldValue = dt.Select("ParentId=1")[0][1].ToString();
            drArr[0] = dt.Select("ParentId=1")[0];
            drArr[0][1] = "NewValue";
            //delete rows
            drArr[1] = dt.Select("ParentId=2")[0];
            drArr[1].Delete();
            //add row
            drArr[2] = dt.NewRow();
            drArr[2].ItemArray = new object[] { 99, "NewRowValue1", "NewRowValue2", null };
            dt.Rows.Add(drArr[2]);

            DataSet dsTarget1 = null;

            #region "Merge(drArr,true,MissingSchemaAction.Ignore )"
            dsTarget1 = dsTarget.Copy();
            dsTarget1.Merge(drArr, true, MissingSchemaAction.Ignore);
            // Merge true,Ignore - Column
            Assert.Equal(false, dsTarget1.Tables["Table1"].Columns.Contains("NewColumn"));

            // Merge true,Ignore - changed values
            Assert.Equal(OldValue, dsTarget1.Tables["Table1"].Select("ParentId=1")[0][1]);

            // Merge true,Ignore - added values
            Assert.Equal(1, dsTarget1.Tables["Table1"].Select("ParentId=99").Length);

            // Merge true,Ignore - deleted row
            Assert.Equal(true, dsTarget1.Tables["Table1"].Select("ParentId=2").Length > 0);
            #endregion

            #region "Merge(drArr,false,MissingSchemaAction.Ignore )"
            dsTarget1 = dsTarget.Copy();
            dsTarget1.Merge(drArr, false, MissingSchemaAction.Ignore);
            // Merge true,Ignore - Column
            Assert.Equal(false, dsTarget1.Tables["Table1"].Columns.Contains("NewColumn"));

            // Merge true,Ignore - changed values
            Assert.Equal("NewValue", dsTarget1.Tables["Table1"].Select("ParentId=1")[0][1]);

            // Merge true,Ignore - added values
            Assert.Equal(1, dsTarget1.Tables["Table1"].Select("ParentId=99").Length);

            // Merge true,Ignore - deleted row
            Assert.Equal(0, dsTarget1.Tables["Table1"].Select("ParentId=2").Length);
            #endregion

            #region "Merge(drArr,true,MissingSchemaAction.Add )"
            dsTarget1 = dsTarget.Copy();
            dsTarget1.Merge(drArr, true, MissingSchemaAction.Add);
            // Merge true,Ignore - Column
            Assert.Equal(true, dsTarget1.Tables["Table1"].Columns.Contains("NewColumn"));

            // Merge true,Ignore - changed values
            Assert.Equal(OldValue, dsTarget1.Tables["Table1"].Select("ParentId=1")[0][1]);

            // Merge true,Ignore - added values
            Assert.Equal(1, dsTarget1.Tables["Table1"].Select("ParentId=99").Length);

            // Merge true,Ignore - deleted row
            Assert.Equal(true, dsTarget1.Tables["Table1"].Select("ParentId=2").Length > 0);
            #endregion

            #region "Merge(drArr,false,MissingSchemaAction.Add )"
            dsTarget1 = dsTarget.Copy();
            dsTarget1.Merge(drArr, false, MissingSchemaAction.Add);
            // Merge true,Ignore - Column
            Assert.Equal(true, dsTarget1.Tables["Table1"].Columns.Contains("NewColumn"));

            // Merge true,Ignore - changed values
            Assert.Equal("NewValue", dsTarget1.Tables["Table1"].Select("ParentId=1")[0][1]);

            // Merge true,Ignore - added values
            Assert.Equal(1, dsTarget1.Tables["Table1"].Select("ParentId=99").Length);

            // Merge true,Ignore - deleted row
            Assert.Equal(0, dsTarget1.Tables["Table1"].Select("ParentId=2").Length);
            #endregion
        }
DataSetTest2