2010-08-25 2 views
13

i obtenir l'exception suivante (clé primaire manquante) dans la ligne de méthode à l'aide Recherche()Le tableau n'a pas de clé primaire

« Le tableau n'a pas une clé primaire. »

J'ai revérifié la base de données et toutes les colonnes de clé primaire sont correctement définies.

mon code:

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

Que diable essayez-vous de réaliser? –

Répondre

29

Vous devez définir le PrimaryKey propriété de votre DataTable objet avant d'appeler Trouver

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

merci beaucoup, c'est la solution. Je pense que cela est similaire à quand nous devrions identifier la propriété de nom de clé de données pour certains contrôles dans ASP.net –

+0

Veillez à bien copier le nom de la colonne. J'ai eu DemoKey_pk dans le code, mais la procédure stockée retournait DemoKey_fk. Puisque DemoKey_pk n'était pas retourné (DemoKey_fk était/est), mon code vomit avec l'exception "La table n'a pas de clé primaire". – user2197446