Dapper ORM 페이징 및 정렬

dapper orm vb.net

문제

나는 Dapper ORM에 시험해보고 있습니다. 아래 코드를 사용하여 테이블에서 데이터를 쿼리 할 수 ​​있습니다.

Dim comments As List(Of Comment)
Using conn = New SqlConnection(ConnectionString)
    conn.Open()
    comments = conn.Query(Of Comment)("SELECT * from comments where userid = @commentid", New With {.userid= 1})
End Using

Return View(comments)

Dapper를 사용하여 페이징 / 정렬하는 방법을 배우는 데 관심이 있습니다. EF는 이것을 돕기 위해 "건너 뛰기"와 "취하기"를했습니다. 마이크로 ORM에는이 기능이 내장되어 있지 않지만이 기능을 수행하는 가장 좋은 방법을 알고 싶습니다.

수락 된 답변

건너 뛰기를 수행하고 Dapper로 가져 오려면 T-SQL을 사용하십시오 .

SELECT *
FROM
(
SELECT tbl.*, ROW_NUMBER() OVER (ORDER BY ID) rownum
FROM comments as tbl
) seq
 WHERE seq.rownum BETWEEN @x AND @y
 AND userid = @commentid
 ORDER BY seq.rownum

인기 답변

너 지금 할 수있어.
당신이해야 할 일은 Query와 PageSize와 PageNumber를 취하는 확장 메소드를 작성한 다음,

LIMIT @PageSize * (@PageNumber - 1), @PageSize 

쿼리를 실행하고 실행하십시오.
쿼리 는 적어도 T-SQL 에서는 ORDER-BY 절이 필요합니다 .
이것은 MS-SQL (2012+), PostgreSQL (8.4+) 및 Oracle (12c +)에서 작동합니다.
MySQL의 경우 LIMIT 오프셋 인 page_size를 추가해야합니다.

LIMIT @PageSize * (@PageNumber - 1), @PageSize 

파이어 버드의 경우, ROWS x에 y를 덧붙여 야합니다.

LIMIT @PageSize * (@PageNumber - 1), @PageSize 

base-1 인덱스의 경우 startoffset_base1에서 endoffset_base1까지입니다.

LIMIT @PageSize * (@PageNumber - 1), @PageSize 

예:

LIMIT @PageSize * (@PageNumber - 1), @PageSize 

다양한 다른 RDBMS의 구문에 대해서는 다음을 참조하십시오.
http://www.jooq.org/doc/3.5/manual/sql-building/sql-statements/select-statement/limit-clause/

확인:

LIMIT @PageSize * (@PageNumber - 1), @PageSize 



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