12
votes

Framework entité - Procédure stockée Valeur de retour

J'essaie d'obtenir la valeur de retour d'une procédure stockée. Voici un exemple de procédure aussi stockée:

select
    Name,
    IsEnabled
from
    dbo.something
where
    ID = @ID

if @@rowcount = 0
    return 1    

return


3 commentaires

L'entité framework est une orje et n'est pas destinée à remplacer complètement tous les appels de la base de données de votre application.


Je peux obtenir la valeur de retour si j'appelle SQL manuellement, ou même si j'exécute un SQLCOMMAND en utilisant le framework d'entité - c'est votre réponse.


@Lamak - Whoops Mon erreur, je l'ai vue sous 50% et j'ai supposé le pire.


5 Réponses :


3
votes

non. L'entité framework n'a pas de support de procédure stockée riche car son orje, pas un remplacement SQL.

Comme vous l'avez déjà découvert, si vous devez utiliser des fonctionnalités moins courantes (plus avancées?) des procédures stockées, vous devrez utiliser de bons anciens façons.


1 commentaires

Pour ajouter à ceci: @@ RowCount retournera une valeur scalaire, ou à ce sujet, tout SELECT @Value retournera une valeur scalaire. Si vous avez déjà un ensemble de résultats, cela ajoutera un nouveau jeu de résultats. Actuellement, 4.0 ne prend pas en charge plusieurs ensembles de résultats, mais le cadre 4.5 avec EF prend en charge plusieurs ensembles de résultats.



-2
votes

Pour que l'intéressé aboutit à EF, vous devez retourner une même structure (pas 1 et nom, iSeNabled) Dans cette requête, vous devez revenir '', 0 par exemple au lieu de 1 dans la condition IF:

select
    Name,
    IsEnabled
from
    dbo.something
where
    ID = @ID

if @@rowcount = 0
    return '',0


1 commentaires

Cela a-t-il quelque chose à voir avec la question?



3
votes

J'ai pu obtenir la valeur de retour (ainsi que les paramètres de sortie et d'entrée) avec l'entité Framework 5 (mais je pense que cela fonctionne de la version 4.x) en utilisant la première approche du code. De votre message, je ne vois pas quelle version de EF vous utilisez et comment vous faites votre cartographie; Si vous envisagez d'utiliser le code - première approche ici, vous pouvez trouver mon message avec la solution:

Obtenir la valeur de retour de la procédure stockée


0 commentaires


0
votes

Vous devez utiliser le "contexte.database.sqlquery" et spécifier le type de sortie de la procédure stockée xxx


0 commentaires