Первичные ключи набора данных .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.......

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

11.12.2008 14:44:56
1 ОТВЕТ

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

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

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


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

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

2
11.12.2008 16:06:18
try {UniqueConstraint uc = new UniqueConstraint ("pk", pks, true); dtbl.Constraints.Add (ЯК); } Я проверил HasErrors и его false после того, как к каждой таблице применен их PK. (проверил свойства Dataset и DataTable) .... Я даже вызываю AcceptChanges () ...
WIDBA 11.12.2008 15:05:44
Набор данных заполняется из источника данных, и затем я применяю ключи. Есть ли какое-либо свойство в наборе данных, которое мне нужно установить, чтобы включить ограничения?
WIDBA 11.12.2008 15:15:08
Вы можете вставить дубликат после применения первичного ключа?
Michael Haren 11.12.2008 15:20:34
работая над созданием схемы набора данных - затем примените ключи - затем загрузите данные, чтобы попробовать это ...
WIDBA 11.12.2008 15:35:27
Сначала я использовал Fill_Schema, применил PK, а затем выполнил заполнение и его исключение - спасибо ...
WIDBA 11.12.2008 15:52:53