Valeurs de retour de la requête Dapper.net avec la procédure stockée

c# dapper sql-server

Question

J'essaie d'appeler une procédure stockée en using Dapper.Net et d'obtenir des valeurs de retour.

p.Add("@INCIDENT_ID", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);

var retResults = con.Execute("usp_GetIncidentID", p, commandType:CommandType.StoredProcedure);

int IncidentID = p.Get<int>("INCIDENT_ID"); 

J'ai essayé plusieurs choses avec la direction des paramètres et avec "@INCIDENT_ID" . Si vous parcourez les résultats, vous pouvez constater que les valeurs de retour correctes apparaissent dans la valeur retResults , mais je ne suis pas en mesure d'accéder aux valeurs comme décrit dans la documentation ci-dessous.

Procédures stockées Dapper prend en charge les procédures stockées intégralement:

var user = cnn.Query<User>("spGetUser", new {Id = 1}, 
    commandType: CommandType.StoredProcedure).First();}}}
If you want something more fancy, you can do:

var p = new DynamicParameters();
p.Add("@a", 11);
p.Add("@b", dbType: DbType.Int32, direction: ParameterDirection.Output);
p.Add("@c", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);

cnn.Execute("spMagicProc", p, commandType: commandType.StoredProcedure); 

int b = p.Get<int>("@b");
int c = p.Get<int>("@c");   

Réponse acceptée

Vous pouvez lire la valeur comme ci-dessous

var incidentId = retResults.ToList()[0].INCIDENT_ID; 

Réponse d'expert

Je soupçonne (non testé) que ceci est purement une incompatibilité dans la façon dont vous nommez le paramètre; essayez (notez le @ ):

p.Add("INCIDENT_ID", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);

var retResults = con.Execute("usp_GetIncidentID", p, commandType:CommandType.StoredProcedure);

int IncidentID = p.Get<int>("INCIDENT_ID"); 



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