2010-08-25 15 views
13

ottengo la seguente eccezione (chiave primaria mancante) nella linea di utilizzare il metodo Find()tabella non dispone di una chiave primaria

"tabella non dispone di una chiave primaria."

Ho ricontrollato il database e tutte le colonne chiave primaria sono impostate correttamente.

il mio codice:

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

Che diavolo stai cercando di raggiungere? –

risposta

29

È necessario impostare la proprietà PrimaryKey della vostra DataTable oggetto prima di chiamare Trova

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

grazie mille, questa è la soluzione. Penso che questo sia simile a quando dovremmo identificare la proprietà del nome della chiave dati per alcuni controlli in ASP.net –

+0

Fai attenzione a copiare correttamente il nome della colonna. Avevo DemoKey_pk nel codice, ma la stored procedure stava restituendo DemoKey_fk. Dal momento che DemoKey_pk non è stato restituito (DemoKey_fk era/è) il mio codice ha generato l'eccezione "Tabella non ha una chiave primaria". – user2197446

Problemi correlati