2011-01-07 7 views
0

샘플 프로젝트에서 엔티티 페이지 크기를 20으로 설정했습니다. 결과 크기가 페이지 크기로 나눌 수있는 엔티티 집합이 있습니다. 예를 들어 100 개의 항목이있는 범주 집합입니다. 내가 갈 때 :WCF 데이터 서비스 페이징 동작

http://localhost/Sample.svc/Categories?$skiptoken=80 

나는 100 번째 범주에 81를 얻고 페이지가 내가 그 페이지로 이동하려고 "다음"링크를

http://localhost/Sample.svc/Categories?$skiptoken=100 

을 가지고 있으며, 그것은 아무것도 반환하지 않습니다. 그 이유는 무엇입니까?

답변

1

페이징은 다음 PageSize 항목을 사용합니다. 발견 한 항목이 더 적 으면 반환 할 항목이 더 이상 없다는 것이 확실하므로 다음 링크를 얻지 못합니다. 쿼리가 요청 된 항목 수를 반환하면 런타임은 마지막 페이지인지 여부를 파악하지 않으므로 단순히 다음 링크를 반환합니다. 그러한 링크가 결과를 반환하지 않을 수도 있습니다. 사실 다음 링크는 결과를 반환하도록 바인딩되지 않지만 응답이 다른 다음 링크를 유지하는 한 잠재적으로 더 많은 결과가 있습니다. 페이징에 내장 된 표준은 미리 정의 된 크기의 페이지를 반환하지만 (마지막 페이지 제외) 서비스는 빈 페이지를 포함하여 각 페이지마다 다른 크기를 반환하는 다른 종류의 페이징을 자유롭게 사용할 수 있습니다.

"왜 마지막 페이지가 비어 있습니까?": 런타임은 "미리보기"가되지 않으므로 주어진 페이지가 다음 페이지보다 작을 때를 제외하고는 마지막 페이지인지 알 수 없습니다. 예상되는 결과 수 앞을 내다 보는 것은 비용이 많이 들고 (필요한 것 이상을 요구하는 것) 잠재적으로 잘못 될 수 있습니다 (추가 결과로 인해 오류가 발생하면 ...).

+0

답변 해 주셔서 감사합니다. – jean27