Первичные ключи набора данных .net - обеспечение уникальности? - PullRequest
3 голосов
/ 11 декабря 2008

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

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

Кто-нибудь указывает, что мне не хватает? Спасибо

1 Ответ

2 голосов
/ 11 декабря 2008

Как насчет добавления их в качестве ограничения?

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

Если это по-прежнему допускает дублирование, предоставляет ли свойство .HasErrors какое-либо указание?


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

То, что в конечном итоге сработало для OP, это обходной путь: добавьте ограничения перед заполнением таблицы.

...