私はDapperを使って実行しようとしているストアドプロシージャを持っていますが、これは私がやっていることに関連していないエラーを起こしていますが、私は何をしているのか分かりません違う。
私が呼び出しようとしているストアドプロシージャのシグネチャを次に示します。
ALTER PROCEDURE [dbo].[stp_UpdateInboundDaf]
@InboundType varchar(255),
@Id bigint,
@UserId bigint,
@DonationID bigint = NULL,
@StatusId int = NULL,
@FinalFlag bit = NULL,
@ValidatedFlag bit = NULL,
@SignedFlag bit = NULL
AS ...
プロシージャを呼び出すために書いたコードは次のとおりです。
_cnx.Query("stp_UpdateInboundDaf", new
{
InboundType = parameters.InboundType,
Id = parameters.Id,
UserId = parameters.UserId,
DonationId = parameters.DonationId,
StatusId = parameters.StatusId,
FinalFlag = parameters.IsFinal,
ValidatedFlag = parameters.Validated,
SignedFlag = parameters.Signed
}, commandType: CommandType.StoredProcedure);
これらは、渡されるパラメータです。
そして、これは私が得るエラーです:
"マルチマッピングAPIを使用する場合、Id以外のキーがある場合はsplitOnパラメータを確実に設定します。パラメータ名:splitOn"
更新
このエラーは、 SqlMapper.GetDynamicSerializer(IDataRecord reader, int startBound, int length, bool returnNullIfFirstMissing)
メソッドから発生しています。エラーの場所とスタックトレースは次のとおりです。
何か案は?
私は現在のバージョンのDapperを使用しています( 文字通り 、Githubのレポをクローンして、この質問を書く直前にSqlMapper.csを私のプロジェクトに取り込みました)。
私はここに私の問題が何かを考え出した。私は例をあまりにも文字通り続けていました。私のストアドプロシージャは値を返さないので、 SqlMapper
はそこになかったものをシリアル化しようとしていました。 _cnx.Execute(...)
代わりに_cnx.Query(...)
を使用するようにコードを変更しました。