web-dev-qa-db-fra.com

Entity Framework - "Une erreur s'est produite lors de la mise à jour des entrées. Voir l'exception interne pour plus de détails"

J'ai un problème, je viens juste de commencer à apprendre EF Model First et je reste à un moment donné pendant un certain temps. J'ai eu une telle erreur:

"Une erreur s'est produite lors de la mise à jour des entrées. Voir l'exception interne pour plus de détails"

J'ai créé un modèle simple sur un diagramme, généré la base de données et écrit un code facile en C # pour ajouter une seule ligne dans la table, mais l'erreur se présente constamment.

Je poste une capture d'écran avec un diagramme/une DLL générée/une main simple/et une erreur de lancement

model and stuff

Lien pour une taille plus grande: http://i.imgur.com/bKGc4wv.png

9
CSharpBeginner

Tournez le Pluralization On. Le problème est que les objets de modèle que vous utilisez utilisent la convention du nom singulier (Pupil), tandis que dans votre base de données, vous utilisez des noms pluralisés Pupils avec s.

METTRE À JOUR

Ce post montre comment vous pouvez l’activer ou le désactiver . Quelques extraits pertinents de ce post:

Pour activer et désactiver la pluralisation

  • Dans le menu Outils, cliquez sur Options.

  • Dans la boîte de dialogue Options, développez Outils de base de données . Remarque: sélectionnez Afficher tous les paramètres si le nœud Outils de base de données n'est pas visible.

  • Cliquez sur Concepteur O/R.

  • Définissez Pluralization of names sur Enabled = False pour définir le concepteur O/R de sorte qu'il ne modifie pas les noms de classe.

  • Définissez Pluralization of names sur Enabled = True pour appliquer des règles de pluralisation aux noms de classe des objets ajoutés au concepteur O/R.

UPDATE 2

Mais notez que, vous devriez éviter les noms pluralisés… Vous pouvez lire ici comment le faire (je le citerai ici, juste au cas où le lien serait brisé).

(...) Lorsque vous travaillez avec l'approche Entity Framework Code First, vous créez vos tables de base de données à partir de vos classes de modèle. Habituellement, Entity Framework crée des tables avec des noms pluralisés. cela signifie que si vous avez une classe modèle appelée PhoneNumber, l'infrastructure Entity créera une table pour cette classe appelée «PhoneNumbers». Si vous souhaitez éviter le nom pluralisé et que vous voulez un nom singulier tel que Customer, vous pouvez le faire comme ceciDans votre classe DBContext, substituez la méthode “OnModelCreating” comme ceci (...)

enter image description here

(...) Avoir cette méthode surchargée évitera de créer des tables avec des noms pluralisés. Maintenant, il va créer une table appelée "PhoneNumber", pas "PhoneNumbers" (...)

11
João Pinho

cela pourrait être la cause d'une conversion de données de .net en sql. par exemple, erreur de conversion de date/heure.

du tout, ce n'est pas une erreur exacte. vous pouvez voir l'erreur exacte dans watch à exception.InnerException.InnerException -> ResultView.

pour moi, il était référence nulle à une colonne datetime

5
FARHAD AFSAR

Pour les disques, j'avais ce problème et c'était une erreur stupide de ma part. Mon problème était le manque de correspondance des types de données . Le type de données dans la table de base de données et les classes C # devraient être identiques ......

1
user3882845

Dans mon cas, les étapes suivantes ont été résolues:

Il y avait une valeur de colonne qui a été définie sur "Update" - l'a remplacée par Edit (mot-clé non sql) Il y avait un espace dans l'un des noms de colonne (enlevé l'espace supplémentaire ou le rognage)

0
NagarajKaundinya

Je faisais face au même problème et aucune des solutions ci-dessus ne m'a aidé. Dans mon projet Web Api 2, j'avais en fait mis à jour ma base de données et placé un unique constraint sur un SQL table column. à l'origine du problème. Le simple fait de vérifier les valeurs des colonnes en double avant de les insérer m'a aidé à résoudre le problème!

0
Jamshaid Kamran

J'ai fait face à la même erreur: 

"Une erreur est survenue lors de la mise à jour des entrées. Voir l’exception interne Pour plus de détails"

Simplement Supprimez et recréez le fichier * .edmx . Cela a fonctionné pour moi. l'erreur aura disparu

0
user688

Mon problème était que l'ID de la table n'est pas AUTO_INCREMENT et j'essayais d'ajouter une plage.

0
M Fouad Kajj

J'ai eu ce problème récemment. Cela était dû au fait que les autorisations de la base de données utilisateur . Vérifient les autorisations de la base de données utilisateur, peut-être que l'utilisateur n'a pas l'autorisation d'écrire sur la base de données. 

0
Edvan Souza