Dapper "프로 시저 또는 함수 sp_XXXX에 인수가 너무 많습니다."

asp.net-mvc-3 c# dapper micro-orm

문제

Dapper의 DynamicParamters 객체를 템플릿 인자와 함께 사용하여 내 엔티티로 인수를 생성합니다. 저장된 프로 시저를 호출 한 후 "프로 시저 또는 함수 sp_MemberSave에 지정된 인수가 너무 많습니다."라는 오류가 발생합니다. " 비지니스 로직을위한 몇몇 엔티티들에 대한 추가적인 속성을 가지고 있습니다. dapper가 저장 프로 시저의 실제 매개 변수 인 매개 변수만을 전달하도록하는 방법이 있습니까? 그것은 Dapper가 저장 프로 시저를 먼저 읽은 다음 매개 변수를 설정하는 것처럼 보이며 올바른 방식 만 사용합니다. 템플릿 기능을 사용하여 매개 변수를 제한하려면 어떻게합니까?

수락 된 답변

개체에서 적절한 매개 변수의 익명 형식을 만들어보십시오 ... 클래스에 A, B, C 및 D가 있고 A와 B 만 필요한 경우 :

DynamicParameters(new { A = entity.A, B = entity.B });

전문가 답변

나는 여기서 그 시나리오를 분명히 할 수 있을까? 방금합니다 (대신 개체를 전달하는 경우 DynamicParameters )는이 분석을 수행;conn.Execute("some sql", someEntity); - 그러면 SQL에서 사용되는 someEntity 멤버 만 추가됩니다. 거기는 전체 어휘 SQL 분석을 수행하지 않는 한, 어떤 잘못된 반응, 그래서 수 주석의 매개 변수, 즉 :

-- removed by Fred: where row.Date < @StartDate

여전히 포함될 것입니다 (위의 예에서 실제로 필요한 것은 아닐지라도 StartDate 구성원 자격이 있습니다).

하나; DynamicParameters 현재 사용자 정의 구현을 신뢰합니다. 이 시점 이후에 매개 변수 분석 검사를 수행 할 는 있지만 전체 시나리오를 먼저 이해하고 싶습니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow