2008-12-11 54 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