243 votes

Est-il possible d’appeler une procédure stockée avec Dapper ?

Je suis très impressionné par les résultats de Dapper Micro ORM pour stackoverflow.com. J'envisage pour mon nouveau projet et mais j'ai une inquiétude à ce sujet, à certains moments, mon projet de disposer d'une Procédure Stockée et je recherche beaucoup sur internet mais rien trouvé avec la procédure stockée. Donc, il y a une façon de Dapper travail avec une procédure stockée?

S'il vous plaît laissez-moi savoir si il est possible de faire autrement, je dois le prolonger, à ma façon.

415voto

Sam Saffron Points 56236

Je viens de vérifier dans procs riche en faveur :

Dans le cas simple, vous pouvez faire :

Si vous voulez quelque chose de plus de fantaisie, vous pouvez faire :

En outre, vous pouvez utiliser exec dans un lot, mais c’est plus maladroit.

15voto

Ed Harper Points 13289

Je pense que la réponse dépend des caractéristiques de procédures stockées, vous devez utiliser.

Les procédures stockées de retourner un résultat peut être exécuté à l'aide d' Query; des procédures stockées qui ne renvoie pas de résultat peut être exécuté à l'aide d' Execute - dans les deux cas (à l'aide d' EXEC <procname>) que la commande SQL (en plus des paramètres d'entrée, si nécessaire). Voir la documentation pour plus de détails.

Comme de révision 2d128ccdc9a2 il ne semble pas être prise en charge native OUTPUT paramètres; vous pouvez ajouter des ce, ou, alternativement, d'en construire de plus en plus complexes, Query commande qui a déclaré TSQL variables, exécuté le SP recueillir OUTPUT paramètres dans des variables locales et finallyreturned dans un jeu de résultats:

DECLARE @output int

EXEC <some stored proc> @i = @output OUTPUT

SELECT @output AS output1

12voto

Saineshwar Points 26
        Here is code for getting value return from Store procedure          

      stored procedure:-

       alter proc [dbo].[UserlogincheckMVC]    
        @username nvarchar(max),    
        @password nvarchar(max)
        as    
        begin    
        if exists(select Username from Adminlogin where Username =@username and Password=@password)    
        begin        
         return 1  
        end    
        else    
        begin     
        return 0  
        end    
        end 

       code :-

        var para = new DynamicParameters();
        string pass = EncrytDecry.Encrypt(objUL.Password);
        conx.Open();
        para.Add("@username", objUL.Username);
        para.Add("@password", pass);
        para.Add("@RESULT", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);
        var RS = conx.Execute("UserlogincheckMVC", para, null, null, commandType: CommandType.StoredProcedure);
        int result = para.Get<int>("@RESULT");
        return result;

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