2008-12-11 4 views
3

У меня есть небольшой набор данных с несколькими datatables. Я загружаю данные из разных БД и имею конфигурационный файл, который я прочитал, чтобы определить первичные ключи, которые я хочу использовать для данных данных. Если в конфиге не содержится правильный (не уникальный) первичный ключ, как я могу поймать это событие при применении первичного ключа к datatable? В настоящее время представляется, что это позволяет мне применять первичный ключ, даже если он не является уникальным .....net Dataset Primary-Keys - обеспечение единства?

 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 предоставляет какие-либо указания?


Редактировать из комментариев:

Что в конечном счете работал О.П. эта работа была вокруг: добавить ограничения до того заполнения таблицы.

+0

try { UniqueConstraint uc = new UniqueConstraint ("pk", pks, true); dtbl.Constraints.Add (uc); } Я проверил HasErrors и его false после того, как каждая таблица применила PK. (проверял свойства Dataset и DataTable) .... Я даже называю AcceptChanges() ... – WIDBA 2008-12-11 15:05:44

 Смежные вопросы

  • Нет связанных вопросов^_^