2008-12-11 16 views
3

我有一个小数据集和几个数据表。我加载来自各种数据库的数据表,并且有一个配置文件,用于确定要在给定数据表上执行的主键。如果配置不包含正确的(非唯一)主键,那么在将主键应用于数据表时如何捕获此事件?目前看来,它允许我应用主键,即使它不是唯一的。....net数据集主键 - 强制唯一性?

 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....... 

任何人指出我失踪了什么?谢谢

回答

2

如何将它们添加为约束?

dt.Constraints.Add("PKC", Columns, true) 

如果仍允许重复,那么.HasErrors属性是否提供任何指示?


编辑从注释:

最终什么工作了OP是这样的变通:前加约束填充表。

+0

尝试UniqueConstraint uc = new UniqueConstraint(“pk”,pks,true); dtbl.Constraints.Add(uc); } 我检查了HasErrors,并且在每张表应用了PK后检查它为假。 (检查数据集和数据表属性)....我甚至打电话AcceptChanges()... – WIDBA 2008-12-11 15:05:44