c#DataSet-使用唯一约束代替主键

时间:2019-02-03 04:53:29

标签: c# dataset

假设我有两个表,并且我想在两列中为它们创建一个唯一约束:

    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”组合始终是唯一的。那么我可以在数据关系中实现这个唯一约束,还是只需要创建一个多对多关系表?

0 个答案:

没有答案