Comment utiliser dapper pour mapper une procédure stockée simple dans c #?

.net c# dapper stored-procedures

Question

Ma procédure stockée renvoie simplement une string . Par exemple: cette procédure stockée renvoie "en-US"

CREATE PROCEDURE [dbo].[P_GetStringConfig](  
  @iCode CHAR(20))  
AS  
BEGIN  
  SET NOCOUNT ON  

  SELECT Value  
  FROM  T_SReq_Config WITH (NOLOCK)  
  WHERE Code = @iCode  

  IF @@ERROR <> 0  
  RETURN @@ERROR  

  RETURN 0  
END

J'utilise Dapper comme ceci:

using (var connection = new SqlConnection(GetConnectionString()))
            {
                var result = connection.Query<ModelClass>(
                                                    "P_GetStringConfig",
                                                    new {@iCode = "MCode"},
                                                    commandType:     CommandType.StoredProcedure).First();
            }

où est ma ModelClass

class ModelClass
{
  string result {get;set;}
}

Mais devenir null .

Des idées que me manque-t-il ici? (ou existe-t-il une autre méthode pour appeler cela?)

Réponse acceptée

Vous devriez probablement avoir le résultat de votre propriété nommé comme le champ retourné par le SP (valeur), mais cela crée un conflit avec un mot-clé réservé

Modifiez donc le SP pour renommer le champ renvoyé comme propriété de votre modèle

CREATE PROCEDURE [dbo].[P_GetStringConfig](  
  @iCode CHAR(20))  
AS  
BEGIN  
  SET NOCOUNT ON  

  SELECT Value AS result
  FROM  T_SReq_Config WITH (NOLOCK)  
  WHERE Code = @iCode  

  IF @@ERROR <> 0  
  RETURN @@ERROR  

  RETURN 0  
END

En outre, je suggère de changer le code pour utiliser FirstOrDefault au cas où votre SP ne trouve rien que votre code déclenche une exception

 var result = connection.Query<ModelClass>("P_GetStringConfig",
                                            new {@iCode = "MCode"},
                                            commandType:CommandType.StoredProcedure)
                                            .FirstOrDefault();


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi