web-dev-qa-db-fra.com

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

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

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

Je viens d'avoir le même problème. Ajout d'une nouvelle colonne et renommé une colonne existante. J'ai actualisé l'EDMX via le modèle de mise à jour à partir de la base de données, mais aucune modification n'a été apportée à l'EDMX et, évidemment, au moment de l'exécution, l'opération a échoué. Comment une mise à jour de procédure stockée doit-elle être effectuée avec Entity Framework?

enter image description here

J'ai supprimé le proc, régénéré le modèle, supprimé les fichiers 'cs' pour le proc, 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, seul le dernier ayant raison. Pourquoi continue-t-il à ramener les anciennes versions?

46
Craig

(Cette solution concerne EF 6. Je n'ai pas essayé d'autres versions d'EF. Cela fonctionne bien.)


Aller au navigateur de 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 Types complexes-> As MyStoreProc_result 
  2. 2e place - Sous Importations de fonctions -> comme MyStoreProc 
  3. 3e place - Sous stocké Procdures/Fonctions -> comme MyStoreProc

Supprimez tous les trois du modèle ..__ Enregistrez l'edmx (en cliquant dans la fenêtre puis sur Ctrl + S). Cliquez ensuite avec le bouton droit de la souris 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 tracas :)

119
SArifin

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

  1. Allez dans "Navigateur de modèles"> "Importations de fonctions"> recherchez la classe de procédure stockée souhaitée> faites un clic droit et cliquez sur "Modifier"
  2. Dans le formulaire "Éditer l'importation de fonctions", 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

8
fnascimento

La seule solution que je pouvais trouver était de fermer EDMX et d'éditer manuellement le code XML qui, même après avoir supprimé le processus stocké de la base de données et mis à jour le modèle à partir de la base de données, avait toujours mentionné le processus. Supprimer les lignes du XML a résolu le problème.

7
Craig

Suivez ces étapes:

Étape 1: Ouvrez Edmx

 enter image description here

Étape 2: Ouvrir le navigateur de modèle

 enter image description here

Étape 3: Ouvrez les types complexes et supprimez votre procedure_Result

 enter image description here

Étape 4: Fonctions ouvertes Importe et supprime votre procedure

 enter image description here

Étape 5 Ouvrez StoredProcedur et Fonctions et supprimez votre procedure

 enter image description here

Étape 6: Enregistrez Edmx (Ctrl+S), Clean Solution , Update Model From Database et sélectionnez votre procedure que vous souhaitez mettre à jour, puis finalement clean, build solution. Terminé !

0
IP Kaal

Tout d’abord, actualisez votre SP via "Mettre à jour le modèle à partir de la base de données", s’il fonctionne correctement, sinon, et en lançant la même exception, suivez les étapes indiquées ci-dessous . 1. Cliquez deux fois. fichier edmx . 2. Dans le navigateur de modèle, supprimez SP des types complexes, des importations de fonction et des procédures/procédures stockées . 3. Enregistrer tout . 4.Ajoutez à nouveau votre SP à "Mettre à jour le modèle à partir de la base de données" . 5.Save All.

0
MS Wani