Dapper로 저장 프로 시저를 호출하는 방법이 있습니까?

.net dapper orm stored-procedures

문제

나는 stackoverflow.com에 대한 Dapper Micro ORM 의 결과에 매우 감명 받았습니다. 내 새 프로젝트를 위해 그것을 고려하고 있지만 내 프로젝트에 저장 프로 시저가 필요하고 웹에서 많은 검색을 수행하지만 저장 프로 시저를 사용하여 아무 것도 발견하지 못할 때가 있다는 우려가 하나 있습니다. Dapper가 저장 프로 시저를 사용하게하는 방법이 있습니까?

가능한 경우 다른 방법으로 연장해야한다는 사실을 알려주십시오.

수락 된 답변

간단한 경우 다음을 수행 할 수 있습니다.

var user = cnn.Query<User>("spGetUser", new {Id = 1}, 
        commandType: CommandType.StoredProcedure).First();

더 멋진 것을 원한다면 다음과 같이 할 수 있습니다.

 var p = new DynamicParameters();
 p.Add("@a", 11);
 p.Add("@b", dbType: DbType.Int32, direction: ParameterDirection.Output);
 p.Add("@c", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);

 cnn.Execute("spMagicProc", p, commandType: CommandType.StoredProcedure); 

 int b = p.Get<int>("@b");
 int c = p.Get<int>("@c"); 

또한 배치에서 exec를 사용할 수는 있지만 더 까다 롭습니다.


인기 답변

대답은 저장 프로 시저의 어떤 기능을 사용해야하는지에 달려 있다고 생각합니다.

결과 집합을 반환하는 저장 프로 시저는 Query 사용하여 실행할 수 있습니다. 결과 세트를 리턴하지 않는 스토어드 프로시 저는 Execute 사용하여 실행할 수 있습니다 - EXEC <procname> SQL 명령으로 사용하는 경우 (필요한 경우 입력 매개 변수 플러스). 자세한 내용은 설명서 를 참조하십시오.

수정 버전 2d128ccdc9a2 에서는 OUTPUT 매개 변수에 대한 기본 지원이없는 것 같습니다. 이것을 추가하거나 TSQL 변수를 선언 한보다 복잡한 Query 명령을 생성하고 SP를 OUTPUT 매개 변수를 로컬 변수로 수집 한 다음 결과 집합에서 다시 반환 할 수 있습니다.

DECLARE @output int

EXEC <some stored proc> @i = @output OUTPUT

SELECT @output AS output1


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