public void Remove_Constraint()
{
DataTable table1 = new DataTable("table1");
DataTable table2 = new DataTable("table2");
DataColumn col1 = table1.Columns.Add("col1", typeof(int));
DataColumn col2 = table1.Columns.Add("col2", typeof(int));
DataColumn col3 = table2.Columns.Add("col1", typeof(int));
Constraint c1 = table1.Constraints.Add("unique1", col1, false);
Constraint c2 = table1.Constraints.Add("unique2", col2, false);
Constraint c3 = table2.Constraints.Add("fk", col1, col3);
table1.Constraints.Remove(c1);
table1.Constraints.Remove(c2);
table2.Constraints.Remove(c3);
Assert.Equal(0, table1.Constraints.Count);
Assert.Equal(0, table2.Constraints.Count);
DataSet ds = new DataSet();
ds.Tables.Add(table1);
ds.Tables.Add(table2);
c1 = table1.Constraints.Add("unique1", col1, false);
c2 = table1.Constraints.Add("unique2", col2, false);
c3 = table2.Constraints.Add("fk", col1, col3);
Assert.Throws<ArgumentException>(() => table1.Constraints.Remove(c1));
Assert.Equal(2, table1.Constraints.Count);
table1.Constraints.Remove(c2);
Assert.Equal(1, table1.Constraints.Count);
table2.Constraints.Remove(c3);
Assert.Equal(1, table1.Constraints.Count);
Assert.Equal(0, table2.Constraints.Count);
table1.Constraints.Remove(c1);
Assert.Equal(0, table1.Constraints.Count);
}