car il a un DefiningQuery et aucun élément n’existe dans l’élément

J’utilise EF dans mon application.

J’essaie de sauvegarder \ insérer un nouvel enregistrement dans une table de mappage

et obtenez l’erreur suivante:

Unable to update the EntitySet 'UsersLimitationToCountry' because it has a DefiningQuery and no element exists in the element to support the current operation.

Dois-je le définir dans l’edmx moi-même? Comment?

Mon tableau de mappage multiple-à-plusieurs manquait de PK

ajouté, et le problème est résolu.

Convenu avec la réponse acceptée. Juste fournir la raison derrière cela …

Lorsque le mappage EF est effectué avec une table qui ne possède pas de clé primaire, elle est considérée comme une vue et les vues étant une entité logique, ne pouvant pas être mise à jour.

Donc, soit append la clé primaire manquante dans les tables ur ou les considérer comme View & ne pas effectuer d’opération de mise à jour sur celles-ci.

Si votre vue peut être mise à jour, vous pouvez simplement supprimer l’élément de la définition EntitySet de votre vue dans la section StorageModel de votre fichier .edmx, et le traitement normal de la mise à jour fonctionnera comme pour toute autre table.

C’est le cas pour moi. La simple suppression a entraîné une autre erreur. J’ai suivi les étapes de ce post sauf le dernier. Pour votre commodité, j’ai copié les 4 étapes du message que j’ai suivi pour résoudre le problème comme suit:

  1. Faites un clic droit sur le fichier edmx, sélectionnez Ouvrir avec, éditeur XML
  2. Localisez l’entité dans l’élément edmx: StorageModels
  3. Supprimez entièrement DefiningQuery
  4. Renommez le magasin: Schema = “dbo” to Schema = “dbo” (sinon, le code générera une erreur indiquant que le nom est invalide)
  1. Faites un clic droit sur le fichier edmx, sélectionnez Ouvrir avec, éditeur XML

  2. Localisez l’entité dans l’élément edmx: StorageModels

  3. Supprimez entièrement DefiningQuery

  4. Renommez le store:Schema="dbo" to Schema="dbo" (sinon, le code générera une erreur indiquant que le nom est invalide) Ces étapes ont fonctionné pour moi

Je suis tombé sur ce problème sur une vue modifiable. Trouvé cet article a résolu mon problème.

Ainsi, la table sous-jacente de ma vue a une clé primaire définie, mais EF ne sait pas quelles colonnes se trouvent dans la PK lorsque l’entité a été créée sur la vue. L’astuce consiste à «convaincre» EF que votre vue peut être mise à jour sous forme de tableau. Les étapes sont presque les mêmes que celles mentionnées ci-dessus:

  1. Faites un clic droit sur le fichier edmx, sélectionnez Ouvrir avec, éditeur XML
  2. Localisez l’entité dans l’élément edmx: StorageModels
  3. Supprimez entièrement la section
  4. Renommez le magasin: Schema = “dbo” to Schema = “dbo”
  5. Modifier le store:Type="Views" à store:Type="Tables"

Si vous ne gérez pas la clé primaire de votre table, ce problème se produira certainement dans MVC lors de la mise à jour et de l’insertion de la firebase database des enregistrements.

Exception DbUpdate non gérée par l’utilisateur

** Revérifiez que vos tables n’ont pas de clé PK: ** ajoutez simplement la clé primaire, puis retirez et rajoutez la table à edmx, alors cela devrait fonctionner

Assurez-vous que vos tables de clés étrangères ne contiennent pas plusieurs noms de colonnes correspondant aux colonnes de votre table de référence. Seule la clé primaire doit correspondre entre votre table de référence et la table référencée. 0..1 doit avoir un nom de colonne distinctif, développer une convention de dénomination pour vos colonnes afin de garantir que les tables référencées et référencées ne comportent pas plus d’un nom de colonne correspondant. Gracieuseté de ALMwConsult.net

Travailler sur db première application mvc. Le problème était que j’oublie de définir la clé primaire pour la table. Résolu en ajoutant une clé primaire en utilisant la commande alter et en mettant à jour la DAL (edmx)

Ma table n’avait pas de clé primaire dans la conception de tables SQL. L’a ajouté et résolu.