var param = new DynamicParameters();
param.Add("MsgId", DbType.Int32, direction: ParameterDirection.Output);
connection.Execute(MessageSelOutMessageId, param, commandType: CommandType.StoredProcedure);
count = param.Get<int>("MsgId");
Dapperを参照して、上のコードを使用して、出力パラメータMsgIdを使用してストアドプロシージャを呼び出しました。正常に動作していますが、場合によってはストアドプロシージャから返される値がなく、返される出力パラメータ値がnullになります。これらのケースでは、私はこの例外があります:
DBNullをnull以外の型にキャストしようとしています!データストリームが完了するまで(クエリの「foreach」の後(...、バッファされた:false)、またはQueryReadyがQueryMultipleのために処分された後)、出力/戻りパラメータには値が更新されないことに注意してください)
私は、以下のコードを使用してこのエラーを回避するために、戻り値のデータ型をnullableとしてマークできることを理解しました
count = param.Get<int?>("MsgId");
しかし、null可能なデータ型 - intを使用する代わりに、 param.Get( "MsgId") == nullをチェックする他の方法はありますか?
Dynamicデータ型count = param.Get<dynamic>("MsgId");
試してくれてありがとうcount = param.Get<dynamic>("MsgId");
それは私が探しているものとして機能します。