2010-08-25 25 views
13

me sale el siguiente excepción (falta la clave primaria) en la línea del método() mediante la función Búsquedatabla no tiene una clave primaria

"tabla no tiene una clave principal."

He vuelto a verificar la base de datos y todas las columnas de la clave principal están configuradas correctamente.

mi código:

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

Qué diablos estás tratando de lograr? –

Respuesta

29

Es necesario configurar el propiedad PrimaryKey de su DataTable objeto antes de llamar Encuentra

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

muchas gracias, esta es la solución. Creo que esto es similar a cuando debemos identificar la propiedad del nombre de la clave de datos para algunos controles en ASP.net –

+0

Tenga cuidado de copiar el nombre de columna correctamente. Tenía DemoKey_pk en el código, pero el procedimiento almacenado devolvía DemoKey_fk. Como DemoKey_pk no se devolvía (DemoKey_fk era/es) mi código vomitó con la excepción "La tabla no tiene una clave principal". – user2197446

Cuestiones relacionadas