SELECT * FROM X DaERE ORM을 사용하여 ID가 ​​IN (...) 인 경우

.net dapper sql

문제

IN 절에 대한 값 목록이 비즈니스 논리에서 나오는 경우 Dapper ORM을 사용하여 IN 절을 사용하여 쿼리를 작성하는 가장 좋은 방법은 무엇입니까? 예를 들어 쿼리가 있다고 가정 해 봅시다.

SELECT * 
  FROM SomeTable 
 WHERE id IN (commaSeparatedListOfIDs)

commaSeparatedListOfIDs 는 비즈니스 로직에서 전달되며 그것은 IEnumerable(of Integer) 모든 유형이 될 수 있습니다. 이 경우 쿼리를 어떻게 작성합니까? 기본적으로 문자열 연결이거나 지금 알고있는 고급 매개 변수 매핑 기술의 일종 인 지금까지 해왔 던 작업을 수행해야합니까?

수락 된 답변

Dapper는이를 직접 지원합니다. 예를 들면 ...

string sql = "SELECT * FROM SomeTable WHERE id IN @ids"
var results = conn.Query(sql, new { ids = new[] { 1, 2, 3, 4, 5 }});

인기 답변

직접 GitHub 프로젝트 홈페이지에서 :

Dapper를 사용하면 IEnumerable을 전달할 수 있으며 쿼리를 자동으로 매개 변수화합니다.

select * 
from (select 1 as Id union all select 2 union all select 3) as X 
where Id in (@Ids1, @Ids2, @Ids3)

// @Ids1 = 1 , @Ids2 = 2 , @Ids2 = 3

번역 될 것이다 :

select * 
from (select 1 as Id union all select 2 union all select 3) as X 
where Id in (@Ids1, @Ids2, @Ids3)

// @Ids1 = 1 , @Ids2 = 2 , @Ids2 = 3



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