Valores devueltos de la consulta Dapper.net con procedimiento almacenado

c# dapper sql-server

Pregunta

using Dapper.Net llamar a un procedimiento almacenado using Dapper.Net y obtener valores devueltos.

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"); 

He intentado un par de cosas diferentes con la dirección del parámetro y el uso de "@INCIDENT_ID" . Si retResults los resultados, puede ver que los valores de devolución correctos descienden en el valor de retResults , pero no puedo acceder a los valores de la manera descrita en la documentación, como se muestra a continuación.

Procedimientos almacenados Dapper admite procs completamente almacenados:

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");   

Respuesta aceptada

Puedes leer el valor como abajo

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

Respuesta experta

Sospecho (no probado) que esto es puramente una falta de coincidencia en cómo se nombra el parámetro; intente (tenga en cuenta el eliminado @ ):

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"); 


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow