Dapper가 저장 프로 시저를 실행하면 다중 매핑에 대한 ArgumentException이 발생합니다.

dapper

문제

Dapper를 사용하여 실행하려고하는 저장 프로 시저가 있습니다.이 프로 시저를 사용하면 수행 할 작업을 파악할 수는 없지만 수행하려고하는 작업과 관련이없는 오류가 발생합니다. 잘못된.

다음은 호출하려고하는 저장 프로 시저의 서명입니다.

_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);

다음은 프로 시저를 호출하기 위해 작성한 코드입니다.

_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.Execute(...) 를 사용하도록 코드를 변경 _cnx.Query(...) 모든 것이 _cnx.Query(...) 작동합니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.