Dapper 쿼리 반환 오류

asp.net-web-api2 dapper

문제

Dapper 버전 1.38.0.0을 사용하는 MVC 웹 API에서 작업하고 있습니다. 나는이 코드를 쓴다.

 var param = new Dapper.DynamicParameters();
 foreach (Match match in Regex.Matches("Select Top @count * From tblCourse", @"(?<!\w)@\w+"))
 {
     string key = match.Value;
     string value = HttpContext.Current.Request.QueryString[key.Replace("@", null)];
     param.Add(key, value);
 }

 result = con.Query<dynamic>("Select Top @count * From tblCourse", param);

하지만 결과 행에 오류가 있습니다.

Additional information: Incorrect syntax near '@count'.

이 문제를 어떻게 해결할 수 있습니까? 감사.

수락 된 답변

TOP @param

SQL 서버에서는 유효하지 않습니다. 2 가지 옵션 :

Select Top (@count) * From tblCourse

또는

Select Top {=count} * From tblCourse

첫 번째는 이것을 나타내는 SQL 서버의 방식입니다. 두 번째는 쿼리에 직접 정수 값 (문자열에만 작동하지 않음)을 주입하는보다 구체적인 기능입니다. 값이 대개 같은 경우 두 번째 값이 일반적으로 더 잘 수행됩니다. 물론 두 번째로 다른 정규 표현식도 필요합니다.


인기 답변

이 시도

result = con.Query<dynamic>("Select Top (@count) * From tblCourse", param);

Top 은 매개 변수를 통해 값이 제공 될 때 괄호 안에 있어야합니다.



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