저장 프로 시저가있는 Dapper.net 쿼리의 반환 값

c# dapper sql-server

문제

using Dapper.Net 저장 프로 시저를 호출하고 반환 값을 얻으려고합니다.

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

나는 매개 변수 방향과 "@INCIDENT_ID" 사용하여 몇 가지 다른 것들을 시도했다. 결과를 단계별로 살펴보면 적절한 반환 값이 retResults 값에서 내려오고 있음을 알 수 있지만 아래에 설명 된대로 값에 액세스 할 수는 없습니다.

저장 프로 시저 Dapper는 완전히 저장된 procs를 지원합니다 :

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

수락 된 답변

아래 값을 읽을 수 있습니다.

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

전문가 답변

나는 이것이 당신이 매개 변수의 이름을 짓는 방법에서 완전히 일치하지 않는다고 (테스트되지 않은) 의심 스럽다 . 시도해보십시오 (제거 된 @ 주의하십시오).

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


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow