假设我有两个表,并且我想在两列中为它们创建一个唯一约束:
public static DataSet TmpEx()
{
DataTable dt1 = new DataTable();
dt1.Columns.Add("AlphaID");
dt1.Columns.Add("ContainsNumID");
dt1.Rows.Add("A", "123");
dt1.Rows.Add("A", "222");
dt1.Rows.Add("B", "123");
dt1.Rows.Add("B", "333");
DataTable dt2 = new DataTable();
dt2.Columns.Add("NumberID");
dt2.Columns.Add("ContainsNumber");
dt2.Rows.Add("123", 1);
dt2.Rows.Add("123", 2);
dt2.Rows.Add("123", 3);
dt2.Rows.Add("222", 2);
dt2.Rows.Add("333", 3);
DataSet ds = new DataSet();
ds.Tables.Add(dt1);
ds.Tables.Add(dt2);
DataColumn[] dcs = new DataColumn[2] { dt1.Columns[0], dt1.Columns[1] };
dt1.Constraints.Add("UQ_AlphaID_NumID", dcs, true);
// ds.Relations.Add(dt1.Columns[1], dt2.Columns[1]);
return ds;
}
我在代码底部有两个问题
一个是我什至不确定我的“约束”初始化是否正确(使用像这样的列数组有效吗?)
第二个是编译器告诉我该关系中没有唯一的列-这显然是正确的,因为它是一个多对多关系,但是多对多表却不存在,因为“ AlphaID”及其“ ContainsNumID”组合始终是唯一的。那么我可以在数据关系中实现这个唯一约束,还是只需要创建一个多对多关系表?