c# - code - visual studio 2017 generate documentation




Impossible de mettre à jour l'EntitySet, car il possède un élément DefiningQuery et aucun élément<UpdateFunction> (11)

J'utilise Entity Framework 1 avec .net 3.5.

Je fais quelque chose de simple comme ceci:

var RoomDetails = context.Rooms.ToList();

foreach (var Room in Rooms)
{        
   Room.LastUpdated = DateTime.Now;
}

Je reçois cette erreur quand j'essaie de faire:

 context.SaveChanges();

J'ai l'erreur:

Impossible de mettre à jour l'EntitySet, car il contient un élément DefiningQuery et aucun élément <UpdateFunction> dans l'élément <ModificationFunctionMapping> pour prendre en charge l'opération en cours.

Je fais beaucoup de mises à jour sur le contexte et ne pas avoir de problèmes, c'est seulement quand j'essaye de mettre à jour cette entité particulière.

Toutes mes recherches montrent la même chose, qu'il n'y a pas de clé primaire déclarée sur l'entité que j'essaye de mettre à jour. Mais hélas, j'ai une clé primaire déclarée ...


Ajoutez simplement une clé primaire à la table. C'est tout. Problème résolu.

ALTER TABLE <TABLE_NAME>
ADD CONSTRAINT <CONSTRAINT_NAME> PRIMARY KEY(<COLUMN_NAME>)

C'est le cas pour moi. La suppression simple a entraîné une autre erreur. J'ai suivi les étapes de ce poste sauf le dernier. Pour votre commodité, j'ai copié les 4 étapes du post 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. Localiser l'entité dans l'élément edmx: StorageModels
  3. Supprimer le DefiningQuery entièrement
  4. Renommez le store:Schema="dbo" en Schema="dbo" (sinon, le code générera une erreur indiquant que le nom est invalide)

Cela peut également se produire si le modèle de données est obsolète.

J'espère que cela va sauver la frustration de quelqu'un d'autre :)


Définir la clé primaire, puis enregistrer la table et rafraîchir puis aller à Model.edmx delete Table et obtenir à nouveau.


J'ai eu le même problème. Comme ce fil l'a dit, Ma table n'avait pas de PK, donc j'ai mis le PK et j'ai exécuté le code. Mais malheureusement, l'erreur est revenue. Ce que j'ai fait ensuite était de supprimer la connexion DB (supprimer le fichier .edmx dans le dossier Model de Solution Explorer) et de le recréer. Erreur perdue après ça. Merci à tous pour partager vos expériences. Cela fait gagner beaucoup de temps.


J'ai juste dû retirer la table du modèle et mettre à jour le modèle en ramenant la table. Je suppose que la clé primaire a été créée après que la table a été tirée dans le modèle.


Je recevais ce problème parce que je produisais mon EDMX à partir d'une base de données existante (conçue par quelqu'un d'autre, et j'utilise le terme 'conçu' vaguement ici).

Il s'avère que la table n'avait aucune clé. EF générait le modèle avec plusieurs clés multiples. Je devais aller ajouter une clé primaire à la table DB dans SQL et ensuite mis à jour mon modèle dans VS.

Cela l'a arrangé pour moi.


L'ajout de la clé primaire a fonctionné pour moi aussi!

Une fois cela fait, voici comment mettre à jour le modèle de données sans le supprimer -

Faites un clic droit sur la page du concepteur edmx Entity et sur 'Mettre à jour le modèle depuis la base de données'.


il suffit d'ajouter une clé primaire à votre table, puis recréer votre EF


une erreur peut survenir, si votre table n'a pas de clé primaire, dans ce cas la table est "en lecture seule", et la commande db.SaveChanges () va toujours apporter une erreur


donc c'est vrai, il suffit d'ajouter une clé primaire

Remarque: assurez-vous que lorsque vous mettez à jour votre diagramme EF à partir de la base de données que vous pointez vers la bonne base de données, dans mon cas la chaîne de connexion pointait vers une base de données locale plutôt que vers la BD Dev erreur je sais, mais je voulais poster ceci parce que cela peut être très frustrant si vous êtes convaincu que vous avez ajouté la clé primaire et que vous obtenez toujours la même erreur







primary-key