public void XmlTest15()
{
MakeParentTable1();
using (FileStream stream = new FileStream(_tempFile, FileMode.Create))
{
_parentTable1.WriteXml(stream, XmlWriteMode.IgnoreSchema);
}
//Create a target table which has matching column(s) name and an extra column
DataTable table = new DataTable("ParentTable");
XmlReadMode mode = XmlReadMode.Auto;
table.Columns.Add(new DataColumn("id", typeof(int)));
table.Columns.Add(new DataColumn("ParentItem", typeof(string)));
table.Columns.Add(new DataColumn("DepartmentID", typeof(int)));
table.Columns.Add(new DataColumn("DummyColumn", typeof(string)));
using (FileStream stream = new FileStream(_tempFile, FileMode.Open))
{
mode = table.ReadXml(stream);
}
Assert.Equal(XmlReadMode.IgnoreSchema, mode);
Assert.Equal("ParentTable", table.TableName);
Assert.Equal(3, table.Rows.Count);
Assert.Equal(4, table.Columns.Count);
Assert.Null(table.DataSet);
//Check the Columns
Assert.Equal("id", table.Columns[0].ColumnName);
Assert.Equal(typeof(int), table.Columns[0].DataType);
Assert.Equal("ParentItem", table.Columns[1].ColumnName);
Assert.Equal(typeof(string), table.Columns[1].DataType);
Assert.Equal("DepartmentID", table.Columns[2].ColumnName);
Assert.Equal(typeof(int), table.Columns[2].DataType);
Assert.Equal("DummyColumn", table.Columns[3].ColumnName);
Assert.Equal(typeof(string), table.Columns[3].DataType);
//Check the rows
DataRow row = table.Rows[0];
Assert.Equal(1, row["id"]);
Assert.Equal("ParentItem 1", row["ParentItem"]);
Assert.Equal(1, row["DepartmentID"]);
Assert.Equal(DBNull.Value, row["DummyColumn"]);
row = table.Rows[1];
Assert.Equal(2, row["id"]);
Assert.Equal("ParentItem 2", row["ParentItem"]);
Assert.Equal(2, row["DepartmentID"]);
Assert.Equal(DBNull.Value, row["DummyColumn"]);
row = table.Rows[2];
Assert.Equal(3, row["id"]);
Assert.Equal("ParentItem 3", row["ParentItem"]);
Assert.Equal(3, row["DepartmentID"]);
Assert.Equal(DBNull.Value, row["DummyColumn"]);
}