結果を返さないストアドプロシージャを実行したときにスローされるエラー

c# dapper stored-procedures

質問

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

今私は問題が見つかったときに情報を返すストアドプロシージャからデータを取得しようとするときに直面している。これは、非常に一般的な使用例です(例:アプリケーション上のユーザーのログ)。 Queryメソッドを呼び出すときにsprocが行を返さない場合、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の例外は誤解を招きます。

何か案は?ありがとう!

受け入れられた回答

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



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ