2012-06-11 2 views
1

거대한 데이터를 페이징없이 그리드보기에 표시하고 싶지만 다음 페이지를 검색하고 이전 페이지를 유지하기 위해 "더 많은로드"옵션을 제공합니다.ADO.Net에서 요청시로드를 구현하는 방법은 무엇입니까?

EF 또는 ADO.Net 구성 요소를 사용하여이 기능을 구현하는 방법은 무엇입니까?

나는 그들이 쿼리마다 부하 요청을 다시 실행하기 때문에 L2SQL 또는 EF에서 .Skipe, .Take 방법이 도움이되지 않습니다 생각합니다. 하지만 구현하려는 것은 열려있는 DataReader와 비슷하지만 데이터베이스에 어떤 일이 일어나고 있는지 (레코드 추가/삭제) 관계없이 결과를 저장합니다. DataReader의 유일한 문제점은 열어 두어서는 안됩니다.

표준 방법은 무엇입니까?

답변

1

표준 방법은 Skip/Take를 사용하고로드 된 각 세그먼트에 대해 쿼리를 다시 실행하는 것입니다.이 솔루션은 쉽고 더 중요하게는 무국적입니다. 현재 HTTP 요청을 실행하는 데 걸리는 시간보다 오래 동안 열려있는 연결/명령/쿼리를 유지하고 싶지는 않습니다. 앱이 상태가 좋고 깨지기 쉽기 때문에 이것은 안티 패턴입니다.

쿼리가 매우 비싼 경우 처음 5 페이지 정도를 새로운 테이블에 저장하여 신속하게 검색 할 수 있습니다.

1

일반 페이징 또한 쿼리를 다시 실행하므로 문제가 될 것이라고 생각하지 않습니다.

유일한 두 가지 선택이 (실제 호출이 반환 한 장점이있을 수 있지만,/테이크 건너 뛰 이하의 벌금 구현입니다) 중 하나 페이징의 일종 할 수 있습니다

또는 데이터 테이블에 모두 저장

또는 어떤 것. 그런 식으로 페이징의 장점을 얻지는 못하지만 한 번에 일부 레코드 만로드 할 수있는 능력을 제공합니다. 이는 사용 편리 성 보너스가 될 수 있습니다.

+0

"실제 페이징"이란 무엇입니까? 건너 뛰기 및 가져 오기 SQL로 변환하십시오. – usr

관련 문제