5

私は現在、プロジェクトの1つでdapperを使用しており、常にストアドプロシージャを実行しています。最初のいくつかのメソッドでは、実行するストアドプロシージャが行を返すときに、すべてが正常に機能していました。

現在、見つかったときに情報を返すストアドプロシージャからデータをフェッチしようとすると、問題が発生します。これは非常に一般的なユースケースです(たとえば、アプリケーションにユーザーを記録する)。メソッドを呼び出し、Querysprocが行を返さない場合、dapperはArgumentException次のメッセージとともにをスローします。

「マルチマッピングAPIを使用する場合、Idパラメータ名以外のキーがある場合はsplitOnパラメータを設定してください:splitOn」

私が使用しているコードは次のとおりです。

using (var conn = new SqlConnection(connString))
{
    conn.Open();

    return conn.Query<Customer>(
            sql: "prc_GetCustomer",
            param: new { Parameter = p },
            commandType: CommandType.StoredProcedure).FirstOrDefault();
}

Executeプロシージャが行を返さないと予想される場合に使用する必要のあるメソッドがあることは承知していますが、実際には私の状況ではありません。また、マルチマッピングを使用していないため、dapperの例外は誤解を招く可能性があります。

何か案は?ありがとう!

4

1 に答える 1

5

クエリが結果グリッドを返さない場合は、クエリではなく実行を使用する必要があります。

于 2013-01-19T09:21:05.677 に答える