Dapper execute存儲過程引發關於多映射的ArgumentException

dapper

我有一個存儲過程,我正在嘗試使用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”

UPDATE

SqlMapper.GetDynamicSerializer(IDataRecord reader, int startBound, int length, bool returnNullIfFirstMissing)方法引發錯誤。這是錯誤位置和堆棧跟踪:

在此處輸入圖像描述

有任何想法嗎?

我使用的是小巧玲瓏的當前版本(我真的只是克隆Github上回購,只是寫了這個問題之前,拉SqlMapper.cs到我的項目)。

一般承認的答案

我弄清楚我的問題在這裡。我的字面意思也是如此。我的存儲過程不返回任何值,因此SqlMapper試圖序列化那些不存在的東西。我改變了我的代碼使用_cnx.Execute(...)而不是_cnx.Query(...) ,現在一切正常。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因