public void XmlTest16()
{
DataSet ds = new DataSet();
DataTable parent = new DataTable("Parent");
parent.Columns.Add(new DataColumn("col1", typeof(int)));
parent.Columns.Add(new DataColumn("col2", typeof(string)));
parent.Columns[0].Unique = true;
DataTable child1 = new DataTable("Child1");
child1.Columns.Add(new DataColumn("col3", typeof(int)));
child1.Columns.Add(new DataColumn("col4", typeof(string)));
child1.Columns.Add(new DataColumn("col5", typeof(int)));
child1.Columns[2].Unique = true;
DataTable child2 = new DataTable("Child2");
child2.Columns.Add(new DataColumn("col6", typeof(int)));
child2.Columns.Add(new DataColumn("col7"));
parent.Rows.Add(new object[] { 1, "P_" });
parent.Rows.Add(new object[] { 2, "P_" });
child1.Rows.Add(new object[] { 1, "C1_", 3 });
child1.Rows.Add(new object[] { 1, "C1_", 4 });
child1.Rows.Add(new object[] { 2, "C1_", 5 });
child1.Rows.Add(new object[] { 2, "C1_", 6 });
child2.Rows.Add(new object[] { 3, "C2_" });
child2.Rows.Add(new object[] { 3, "C2_" });
child2.Rows.Add(new object[] { 4, "C2_" });
child2.Rows.Add(new object[] { 4, "C2_" });
child2.Rows.Add(new object[] { 5, "C2_" });
child2.Rows.Add(new object[] { 5, "C2_" });
child2.Rows.Add(new object[] { 6, "C2_" });
child2.Rows.Add(new object[] { 6, "C2_" });
ds.Tables.Add(parent);
ds.Tables.Add(child1);
ds.Tables.Add(child2);
DataRelation relation = new DataRelation("Relation1", parent.Columns[0], child1.Columns[0]);
parent.ChildRelations.Add(relation);
relation = new DataRelation("Relation2", child1.Columns[2], child2.Columns[0]);
child1.ChildRelations.Add(relation);
using (FileStream stream = new FileStream(_tempFile, FileMode.Create))
{
WriteXmlSerializable(stream, parent);
}
DataTable table = new DataTable();
ReadXmlSerializable(_tempFile, table);
Assert.Equal("Parent", table.TableName);
Assert.Equal(2, table.Columns.Count);
Assert.Equal(2, table.Rows.Count);
Assert.Equal(typeof(int), table.Columns[0].DataType);
Assert.Equal(typeof(string), table.Columns[1].DataType);
Assert.Equal(1, table.Constraints.Count);
Assert.Equal(typeof(UniqueConstraint), table.Constraints[0].GetType());
}
}