어떻게 Dapper 쿼리에서 '@'를 이스케이프합니까?

dapper sql-server tsql

문제

나는 문자 ( @ )에 리터럴을 포함해야하는 질의를 가지고있다. Dapper 쿼리로 어떻게 표현합니까?

var num = cnx.Query<int>("declare @foo int = 2; select @foo").Single();

대안으로 리터럴을 사용해 보았습니다.

var num = cnx.Query<int>(
    "declare {=at}foo int = 2; select {=at}foo", new { at = "@" }
).Single();

그러나 문자열 리터럴이 지원되지 않으므로 NotSupportedException 이 발생합니다.

(실제 코드에서는 다른 @ 매개 변수가 있는데 실제로는 바꿀 필요가 있고 자동으로 이스케이프 처리되기 때문에 원시 SqlCommand 대신 가능한 Dapper를 사용하고 싶습니다.)

수락 된 답변

오. 나는 그것을 알아. 실제로 아무 것도 바인딩되지 않은 @param 이있는 경우에는 그대로 기본 SqlCommand 로 전달되어 DB로 바로 전달됩니다.

즉,이 작업을 수행하기 위해 특별한 작업을 수행 할 필요가 없습니다. 내 첫 번째 예제는 잘 실행되어야합니다. 바보 나.



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