2017-04-13 1 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]}クライアントで は、私が10進値を取得したいが、私は苦労してい... 10進数のプロパティ "result"を持つクラスをクライアント上に作成し、変換しようとしましたが動作しません。私はその文字列を取り、FromJsonを使用して変換しようとしましたが、どちらも機能しません。

答えて

1

calling stored procedures with OrmLiteの推奨APIについては、ドキュメントを参照してください。

戻り値の型はSPがちょうど小数を返す場合、ストアドプロシージャのリターンは、あなたがそれにアクセスすることができるはずものと一致している必要があります

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

あなたはそれを入力してかわからない場合、または意志それは裸のスカラー結果を返さない場合は、戻り値の型の形状と一致する必要があります

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

、例えば:あなたはobjectを使用することができるよう、例えば返します単一行を返す場合は、List<object>の行の値にアクセスできます。

関連する問題