결과를 반환하지 않는 저장 프로 시저를 실행하면 오류가 발생합니다.

c# dapper stored-procedures

문제

현재 우리 프로젝트 중 하나에서 dapper를 사용하고 있으며 항상 저장 프로 시저를 실행합니다. 처음 몇 가지 메서드에서 우리가 실행하는 저장 프로 시저가 행을 반환 할 때 모든 것이 잘 작동했습니다.

지금은 발견 된 정보를 반환하는 저장 프로 시저에서 데이터를 가져 오려고 할 때 문제가 발생합니다. 이것은 매우 일반적인 사용 사례입니다 (예 : 응용 프로그램에서 사용자 로깅). Query 메서드를 호출 할 때 sproc이 어떤 행도 반환하지 않으면 dapper는 다음 메시지와 함께 ArgumentException 을 throw합니다.

"다중 매핑 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 메서드가 있음을 알고 있습니다. 또한 다중 맵핑을 사용하지 않기 때문에 더 복잡한 예외가 오해의 소지가 있습니다.

어떤 아이디어? 감사!

수락 된 답변

쿼리가 결과 격자를 반환하지 않으면 쿼리가 아닌 실행을 사용해야합니다.



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