더러운 쿼리에서 필드 이름 전달

c# dapper

문제

유지 보수 일이 데이터베이스에서 확인되는지 확인하는 함수를 만듭니다. 각 열은 Maintenance + DayName (MaintenanceSunday, MaintenanceMonday 등)입니다.

객체를 전달할 때마다 검사중인 객체의 값을 가져 와서 문자열을 "삽입"하지 않는 것이 좋습니다. 안전하게 얻을 수있는 방법이 있나요? (String.Format ( "where {0} = ...", field))? 나는 정말로 SQL 인젝션의 가능성을 열어두고 싶지 않습니다. (비록 q.ToUpper ()가 "SUNDAY", "MONDAY"등의리스트에 있는지를 확인하기위한 초기 체크가 있습니다. 보호)

나는 이것을 시도했지만 폭탄은 'Maintenancesunday'를 사실과 비교하려고 시도했다.

string field = "Maintenance" + q; // q = "sunday"
return conn.Query<Data>("SELECT * FROM Data WHERE @Field = @Value", new { Field = field, Value = true }).ToList();

수락 된 답변

Dapper는 매개 변수화 된 열 이름을 지원하지 않는 ADO.NET을 사용합니다. 이 작업을 수행하기 위해 하드 코딩이 필요합니다.



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