2017-04-13 123 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]} 在客戶端,我想要得到的十進制值,但我掙扎...... 我在客戶端上創建了一個具有小數屬性「結果」的類,並嘗試將其轉換爲它,但它不起作用。我嘗試使用該字符串並使用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 }); 

如果它不返回一個裸體標結果,你需要相匹配的返回類型,如形狀

var result = db.Single<List<object>>("EXEC MyProc @p1 @p2", new { p1, p2 }); 
:如果它返回一個單行您可以訪問在 List<object>行值