87 votes

Procédures stockées et mise à jour d'EDMX

J'ai eu des problèmes interminables avec les procédures stockées et EDMX. J'ai créé une procédure, mis à jour le modèle de la base de données et tout a fonctionné. J'ai ensuite supprimé une colonne et en ai ajouté une nouvelle dans la procédure stockée. J'ai mis à jour le modèle, mais l'EDMX n'a pas semblé rafraîchir la définition de la procédure.

J'ai supprimé la proc et fait une mise à jour, mais j'ai dû supprimer manuellement toutes les références à la proc. J'ai fini par renommer la proc et l'importer via une mise à jour du modèle depuis la base de données.

Je viens de rencontrer le même problème. J'ai ajouté une nouvelle colonne et renommé une colonne existante. J'ai actualisé l'EDMX via le modèle de mise à jour de la base de données, mais il n'y a pas eu de changements dans l'EDMX, et il est évident qu'au moment de l'exécution, cela échoue. Comment doit-on procéder à la mise à jour d'une procédure stockée avec Entity Framework ?

enter image description here

J'ai supprimé la procédure, régénéré le modèle, supprimé les fichiers 'cs' de la procédure, compilé, puis ajouté à nouveau la procédure à la base de données, régénéré le modèle, et bang ! Il ajoute le même modèle 3 fois, et seule la dernière est correcte. Pourquoi continue-t-il à ramener les anciennes versions ?

218voto

SArifin Points 2416

(Cette solution est pour EF 6. Je n'ai pas essayé dans d'autres versions de EF. Elle fonctionne bien).


Aller dans le navigateur du modèle. MyStoreProc est le nom de la procédure stockée (à titre d'exemple). MyStoreProc apparaîtra à 3 endroits.

  1. 1ère place - Sous Complex Types-> en tant que MyStoreProc_result
  2. 2ème place - Sous Function Imports -> en tant que MyStoreProc
  3. 3ème place - Sous-stockage Procdures/ Fonctions -> comme MyStoreProc

Supprimer les trois du modèle. Sauvegarder l'edmx (en cliquant dans la fenêtre puis ctrl+S). Faites ensuite un clic droit et cliquez sur mettre à jour le modèle à partir de la base de données. Ajoutez ensuite la procédure stockée mise à jour et enregistrez à nouveau.

Résolu sans problème :)

62voto

Fábio Nascimento Points 1381

Pour actualiser une procédure stockée existante dans un fichier edmx,

  1. Allez dans "Model Browser" > "Function Imports" > trouvez la classe de procédure stockée souhaitée > faites un clic droit et cliquez sur "Edit"
  2. Dans le formulaire "Modifier la fonction d'importation", dans la section "Renvoie une collection de", cliquez sur le bouton "Mettre à jour".
  3. Cliquez sur "OK" pour terminer l'actualisation.

enter image description here

13voto

IP Kaal Points 340

Procédez comme suit :

Étape 1 : Ouvrir Edmx

enter image description here

Étape 2 : Ouvrir le navigateur de modèles

enter image description here

Étape 3 : Ouvrez Complex Types et supprimez votre procedure_Result

enter image description here

Étape 4 : Ouvrez Fonctions Imports et supprimez votre fichier procedure

enter image description here

Étape 5 Ouvrez StoredProcedur et Functions et supprimez votre procedure

enter image description here

Étape 6 : Enregistrer Edmx (Ctrl+S), Clean Solution , Update Model From Database et sélectionnez votre procedure que vous souhaitez mettre à jour et enfin clean, build solution. C'est fait !

7voto

Craig Points 2710

La seule solution que j'ai trouvée a été de fermer l'EDMX et de modifier manuellement le XML, qui, même après avoir supprimé la procédure stockée de la base de données et mis à jour le modèle à partir de la base de données, mentionnait toujours la procédure. La suppression des lignes du XML a résolu le problème.

0voto

MS Wani Points 31

Tout d'abord, rafraîchissez votre SP via "Update Model from Database", si cela fonctionne, c'est parfait, si ce n'est pas le cas et que vous obtenez la même exception, suivez les étapes indiquées ci-dessous. 1. double-cliquez sur le fichier .edmx. 2. Dans le navigateur de modèle, supprimez la PS des types complexes, des importations de fonctions et des procédures/fonctions stockées. 3. Sauvegarder tout. 4. ajouter à nouveau votre SP via "Update Model from Database" (mise à jour du modèle à partir de la base de données) 5. sauvegarder le tout.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X