Nouvelles Chroniques d'Amethyste

Penser au Sens, pas au Verbe


Poster un commentaire

EF: Venir à bout des créations de type complexe récalcitrants

Lorsque l’on travaille avec Entity Framework il n’est pas rare de devoir remettre à jour des procédures stockées, en particulier leur type de retour.

L’opération s’effectue simplement en sélectionnant la fonction depuis le menu « Importation de fonctions » puis le menu contextuel Modifier. Il s’ouvre par exemple:

import-func

Comme on le voit sur la figure, PRC_PRODUIT retourne un type complexe appelé Produit. Mais un clic sur le bouton Obtenir les informations de colonne, ne donne pas le résultat espéré:

 

La procédure ou donction stockée sélectionnée ne retourne aucune colonne.

 

Et pourtant je peux témoigner que ma procédure stockée fonctionne correctement?

Je n’ai pas précisé un détail, PRC_PRODUIT attent un paramètre de type int.

Alors que se passe t’il?

La question est de savoir quelles valeurs de paramètres sont passée et comment se comporte la procédure stockée dans ce cas.

EF done la valeur NULL à tous les paramètres et non pas la valeur par défaut du type. Le premier tests que vous devez faire est donc de lancer la procédure dans ce contexte et regarder ce qu’elle fait, ce qu’elle retourne au juste.

retour-sqlNous constatons donc que quelque chose remonte et il s’agit bien des colonnes que je m’attends à recevoir.

Le problème est donc ailleurs.

Ajoutons la ligne suivante au début de la procédure stockée:

SET FMTONLY OFF;

Et tout de suite les choses vont mieux:

setfqm

Selon la documention, cette ligne demande de ne retourner que les métas données au client.

Notez aussi que la commande est en passe de devenir obsolète un de ces jours, mais il y a des lternatives:

http://msdn.microsoft.com/fr-fr/library/ms173839.aspx

Publicités