J'ai une application Web MVC avec une table dans le modèle que j'aimerais ajouter à. J'ai la clé principale avec les autres champs de données, mais chaque fois que j'essaie d'ajouter à la table, j'obtiens l'erreur suivante:
"Impossible d'insérer une valeur explicite pour la colonne d'identité dans le tableau" Nom "lorsque Identity_insert est défini. À OFF. " P>
Je ne sais pas pourquoi ce problème monte, j'ai la clé principale définie comme l'identité et elle est également définie sur l'incrément automatique du concepteur de table Visual Studio. Est-ce que je peux régler le paramètre identity_insert dans le concepteur de table dans Visual Studio ?? Ou y a-t-il un autre problème qui pourrait causer cela. P>
Mise à jour: @brian - Autant que je puisse dire, je ne définis pas la valeur explicitement, voici le code qui ajoute à la table ( s). p>
5 Réponses :
Vous essayez de définir une valeur de clé primaire explicitement probablement dans l'entité LINQ éventuellement; Vous essayez de dire, par exemple, insérer 1 dans le champ Primary Key qui est une identité et Linq le voit comme une valeur insérée. P>
Également si vous utilisez LINQ vers SQL, dans le type de données de serveur du champ, assurez-vous qu'il indique l'identité dans le champ Type de données; Si cela ne dit pas d'identité, une erreur de configuration peut-elle être une erreur de configuration dans Linq. P>
+1 C'est ce que je voulais trouver. =) (Barrière de la langue = ()
J'utilise réellement Linq-to-entités pour mon modèle.
StoreGeneratedPattern devrait dire l'identité pour Linq aux entités, au moins pour 4.0. N'a pas utilisé 1.0 beaucoup.
Il semblerait que votre code tente d'insérer une valeur spécifique dans la colonne principale de clé définie comme identity.
Pour éviter l'erreur - N'insérez pas de valeurs! Laissez la base de données pour obtenir une nouvelle valeur pour la ligne que vous insérez. P>
Si vous utilisez LINQ-TO-SQL, cliquez sur la table en question dans votre concepteur visuel et consultez Les propriétés: p>
La "valeur générée automatiquement" doit être "true" (qui n'est pas la valeur par défaut), et la synchronisation automatique doit être "OnSert" (à nouveau: pas la valeur par défaut). En outre, définissez la "clé primaire" sur true et vérifiez que le "type de données du serveur" est correct - Si vous avez besoin de remplacer le comportement par défaut (typiquement uniquement dans des scripts de nettoyage ou des manipulations de données uniques), vous pouvez activer l'identité_insert sur une table, par exemple Après cela, vous pouvez insérer n'importe quelle valeur que vous aimez dans la colonne d'identité: p> int non null identité code> (ou quelque chose comme ça). P> SET IDENTITY_INSERT YourTableName ON
INSERT INTO YourTableName(IdentityColumn) VALUES(5555)
SET IDENTITY_INSERT YourTableName OFF
J'ai essayé de cliquer avec droit sur la table dans le concepteur du studio de gestion de serveur MSSQL, mais rien n'a vu comme vous l'avez fait. J'ai couru la requête pour activer l'insertion d'identité, mais cela n'a pas aidé mon code insérer par programme à la table.
J'ai essayé cela à nouveau dans Visual Studio. Je ne vois pas les options pour "Touche principale" seule clé d'entité ". Je vois le type. Je ne vois aucun des autres paramètres en gras que vous voyez.
Merci à tous pour vos suggestions, j'ai fini par résoudre mon problème en faisant une actualisation du modèle. Mon modèle avait été créé avant de définir la clé primaire sur la spécification d'identité avec l'incrément automatique, donc je suppose que tout ce dont il était nécessaire était un rafraîchissement pour l'obtenir. P>
J'ai eu cette question et j'ai résolu en supprimant la colonne d'identité du modèle. Cela a effacé jusqu'à p>
Si vous utilisez LINQ vers SQL.JUST Supprimer votre table du fichier .EDMX en cliquant avec le bouton droit de la souris sur la table et la sélection de l'option "Supprimer du modèle". puis mettre à jour votre fichier .edmx en cliquant avec le bouton droit de la souris sur le fichier .EDMX et la sélection de «Mettre à jour le modèle de la base de données ...». P>
Son travail pour moi..issez .. p>
Vérifiez vos paramètres / propriétés sur la table en question dans votre concepteur LINQ-TO-SQL - Vous devez assurer certains paramètres spécifiques - voir ma réponse pour plus de détails.
Vient de modifier le
*. EDMX code> Pour modifier la valeur correspondant à ma clé principale à partir de CODE> code>. Il suffisait d'ajouter l'attribut avec sa valeur: storegeneratedpattern = "identité" code>.