2010-08-25 5 views
13

я получаю следующее исключение (отсутствуют первичный ключ) в строке с помощью метода() НайтиТаблица не имеет первичный ключ

«Таблица не имеет первичный ключ.»

Я перепроверял базу данных, и все столбцы первичного ключа установлены правильно.

мой код:

DataTable dt = p.GetAllPhotos(int.Parse(Id)); 
DataTable temp = new DataTable(); 
temp = dt.Clone(); 
temp = (DataTable)(Session["currentImage"]); 
DataTable dtvalid = new DataTable(); 
dtvalid = dt.Clone(); 
DataRow[] drr = new DataRow[1]; 
drr[0] = dt.Rows.Find((int.Parse(temp.Rows[0]["photoId"].ToString()))+1); 
foreach (DataRow dr in drr) 
{ 
    dtvalid.ImportRow(dr); 
} 
dtvalid.AcceptChanges();' 
+0

Какого черта вы пытаетесь достичь? –

ответ

29

Вы должны установить PrimaryKey свойство вашего DataTable объекта перед вызовом Найти

DataColumn[] keyColumns = new DataColumn[1]; 
keyColumns[0] = dt.Columns["<columnname>"]; 
dt.PrimaryKey = keyColumns; 
+0

Спасибо, что так много, это решение. Я думаю, что это похоже на то, когда мы должны идентифицировать свойство имени ключа данных для некоторых элементов управления в ASP.net. –

+0

Будьте осторожны, чтобы скопировать имя столбца правильно. В коде был DemoKey_pk, но хранимая процедура возвращалась DemoKey_fk. Так как DemoKey_pk не возвращался (DemoKey_fk был/is), мой код засыпал исключение «Таблица не имеет первичного ключа». – user2197446

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