2017-02-22 3 views
1

Dapperを使用してストアドプロシージャを呼び出しています。私はusingステートメントの外で返されたレコードを使用したいと思いますが、変数returnedDataは動的であり、ストアドプロシージャの結果に依存しているため、どのように宣言するのか分かりません。私は一度だけこの呼び出しをしていますので、ストアドプロシージャによって返されたコレクションを表すモデルを作成するのは意味がありません。なぜ私は使いたいのですか?コンパイラが幸せになりますように、A using文の前に変数returnedDataを宣言する方法Dapperで文を使用する前に動的結果を宣言する

using (IDbConnection db = new SqlConnection(SqlDataAccess.LoadConnectionString("TestData"))) 
{ 
    var returnedData = db.Query<dynamic>("StoredProcedureName", 
           new 
           { 
            ClientId = myClientId, 
            CompanyId = myCompanyId 
           }, 
           commandType: CommandType.StoredProcedure).SingleOrDefault(); 
} 

+0

使用の外にあなたの変数を宣言するためにあなたを停止して何? – Sharky

+0

私は 'returnedData'を' dynamic'と宣言できました。私は 'ダイナミック'変数ではあまり働かなかった。 – webworm

答えて

1

Query<T>戻りIEnumerable<T>、およびSingleOrDefaultはそれからTを生成し、そのreturnedDatadynamicとして宣言することができます。

dynamic returnedData = null; 
using (IDbConnection db = new SqlConnection(SqlDataAccess.LoadConnectionString("TestData"))) 
{ 
    returnedData = db.Query<dynamic>(
     "StoredProcedureName" 
    , new { 
      ClientId = myClientId 
     , CompanyId = myCompanyId 
     } 
    , commandType: CommandType.StoredProcedure 
    ).SingleOrDefault(); 
} 
Console.WriteLine(
    "ClientId={0}, CompanyId={1}" 
, returnedData?.ClientId 
, returnedData?.CompanyId 
); 
+0

ありがとう!シンプルでストレートなポイント。 '?'を使うと仮定していますが、 'returnedData'が' null'ではないのに値を取得できますが、例外がスローされない場合は値を取得できますか? – webworm

+1

@webwormはい、まさにその目的です。 'SingleOrDefault'ではなく' SingleOrDefault'を使用しているので、 'null'を返す可能性があります。 – dasblinkenlight

関連する問題