C# .net数据集主键-强制唯一性?

C# .net数据集主键-强制唯一性?,c#,.net,datatable,dataset,primary-key,C#,.net,Datatable,Dataset,Primary Key,我有一个带有几个数据表的小数据集。我从各种数据库加载数据表,并读取一个配置文件,以确定要在给定数据表上强制执行的主键。如果配置不包含正确的(非唯一的)主键,那么在将主键应用于datatable时如何捕获此事件?目前,它似乎允许我应用主键,即使它不是唯一的 DataTable dtbl = ds.Tables[t.tblname]; DataColumn[] pks = new DataColumn[t.Get_Key_Columns().Count];

我有一个带有几个数据表的小数据集。我从各种数据库加载数据表,并读取一个配置文件,以确定要在给定数据表上强制执行的主键。如果配置不包含正确的(非唯一的)主键,那么在将主键应用于datatable时如何捕获此事件?目前,它似乎允许我应用主键,即使它不是唯一的

       DataTable dtbl = ds.Tables[t.tblname];

       DataColumn[] pks = new DataColumn[t.Get_Key_Columns().Count];
       int i = 0;
        foreach(DataColumn c in dtbl.Columns)
        {
            if(t.Get_Key_Columns().Exists(delegate(App_Column ac) 
                  {return (ac.column_name == c.ColumnName);}))
            {
                pks[i] = c;
                i++;
            }
        }
        try
        {
            dtbl.PrimaryKey = pks; 
        } 
         catch etc.......

有人指出我遗漏了什么吗?谢谢

作为约束添加它们怎么样

dt.Constraints.Add("PKC", Columns, true)
如果仍然允许重复,那么.HasErrors属性是否提供任何指示


从评论中编辑


最终对OP起作用的是这种变通方法:在填充表格之前添加约束

尝试{UniqueConstraint uc=new UniqueConstraint(“pk”,pks,true);dtbl.Constraints.Add(uc);}在应用每个表的pk之后,我检查了HasErrors及其false。(已检查数据集和数据表属性)。。。。我甚至调用AcceptChanges()…数据集从数据源填充,然后我应用键。。数据集上是否有一些属性需要设置以启用约束?在应用主键后是否可以插入一个副本?正在构建数据集架构-然后应用键-然后加载数据以进行尝试…我首先使用了Fill_schema,应用PKs,然后进行填充并引发异常-谢谢。。。