2017-04-13 5 views
1

매개 변수 목록이있는 저장 프로 시저 이름을 사용하는 요청이 있습니다. SP가 될 수 있으므로 결과는 아무 것도 아니므로 SqlList<object>을 사용하는 이유입니다. 내가ServiceStack OrmLite SqlList <object>

return db.SqlList<object>(spName, cmd => 
        { 
         cmd.CommandType = CommandType.StoredProcedure; 
         if (parameters != null) 
         { 
          foreach (var p in parameters) 
          { 
           cmd.AddParam(p.Key, p.Value, ParameterDirection.Input); 
          } 
         } 
         cmd.CommandTimeout = 90; 
        }); 

를 사용하는 경우

내가 같은 system.dynamic.expendo 개체를 얻을 : {[결과는 1.7783336]} 클라이언트에 , 나는 진수 값을 싶어하지만 투쟁 ... 십진 속성 "result"가 있고 변환하려고 시도했지만 작동하지 않는 클래스를 클라이언트에서 만들었습니다. 나는 문자열을 가져 와서 FromJson을 사용하여 변환하려고 시도했으나 어느 것도 작동하지 않습니다 ...

답변

1

calling stored procedures with OrmLite에 대한 권장 API에 대해서는 문서를 참조하십시오.

반환 형식은 SP 단지 소수를 반환하는 경우 저장 프로 시저의 반환, 당신은 그것을 액세스 할 수 있어야 일치해야합니다 :

var result = db.SqlScalar<decimal>("EXEC MyProc @p1 @p2", new { p1, p2 }); 

당신이 그것을 입력 한 내용을 모르는 경우 또는 것이다 당신이 object를 사용할 수있는 반환, 예를 들면 :

var result = db.SqlScalar<object>("EXEC MyProc @p1 @p2", new { p1, p2 }); 

가 벌거 벗은 스칼라 결과를 반환하지 않는 경우 반환 형식, 예를 들면의 모양에 맞게해야합니다 단일 행을 반환하는 경우 List<object>의 행 값에 액세스 할 수 있습니다.

var result = db.Single<List<object>>("EXEC MyProc @p1 @p2", new { p1, p2 });