c# ajout de la ligne de datatable qui a une auto incrémentée
J'ai un datatable, avec les colonnes A, B, C. je l'ai mis en colonne d'Une "identité" true à la propriété, mais je ne peux pas ajouter une ligne à la table maintenant.
Le code que j'essaie est-ce:
dsA.dtA row = dsA.dtA.NewdtARow();
row.B = 1;
row.C = 2;
dsA.dtA.Rows.Add(row);
Je suis NoNullAllowedException, mais je ne comprends pas pourquoi. La colonne A est PK. Si j'ai essayé de mettre en ligne.A = 5 (ou tout objet similaire) je vais vous obtenez une erreur lorsque j'essaie de mettre à jour la table en disant: "impossible d'insérer une valeur explicite pour l'identité de la colonne dans le tableau lorsque identity_insert est réglé sur off"
Comment puis-je résoudre ce problème? C'est frustrant.
J'ai déjà répondu, mais il serait grand, il vous permet de mettre un point d'arrêt sur la ligne de dts.les lignes.add(ligne) et check it out qui ne ligne.Une porte.
Vous voudrez peut-être vérifier si IDENTITY_INSERT est on ou OFF pour votre table.
ColumnModel.IsIdentity (EF) et DataColumn.AutoIncrement ADO (Datatable) sont deux choses différentes dans deux cadres différents. IsIdentity est à dire la base de données fournira la valeur. AutoIncrement, c'est dire l'objet datatable fournira la valeur.
Vous voudrez peut-être vérifier si IDENTITY_INSERT est on ou OFF pour votre table.
ColumnModel.IsIdentity (EF) et DataColumn.AutoIncrement ADO (Datatable) sont deux choses différentes dans deux cadres différents. IsIdentity est à dire la base de données fournira la valeur. AutoIncrement, c'est dire l'objet datatable fournira la valeur.
OriginalL'auteur John Smith | 2014-05-01
Vous devez vous connecter pour publier un commentaire.
de l'essayer.
Mais que faire si j'ai déjà la datatable avec une colonne existante qui a autoincrement? Je viens de souhaitez simplement ajouter une ligne à la table, c'est tout.
OriginalL'auteur Raju Padhara
Ouvrir le concepteur de la base de données de fichier xsd et de définir l'auto-incrémentation, AutoIncrementSeed et AutoIncrementStep propriété de la colonne A dans la datatable pour une colonne existante.
OriginalL'auteur Gary
Essayez l'une de ces deux:
Définir des valeurs de champ:
Ajouter une ligne à
DataTable
:Ils sont tous les deux la même juste essayer l'un d'eux et il devrait vous aller. Rappelez-vous aussi que lorsque vous voulez faire une colonne auto-incrémentée dans
DataTable
ensuite, vous devez insérer la valeur null.DataTable dt = new DataTable(); dt.Les colonnes.Add("A",Système.Type.GetType("Le Système De.Int32")).AutoIncrement = true;dt.Les colonnes.Add("B"); dt.Les lignes.Ajouter(null, "abc"); dt.Les lignes.Ajouter(null, "xyz"); j'ai vérifié et il a travaillé dans visual studio.
OriginalL'auteur khalid khan