문제
나는 sql 쿼리를 다시 가져올 수있는 많은 수의 행을 통해습니다지금 나는 쿼리를 DB 변환 결과를 설정으로 목록(의)및 데이터 바인딩하는 표 목록입니다.
이 때에 시간 제한으로 인해 크기의합니다.
내가 현재 세 teir 설정에 의해 UI 이에 작용하는 개체의 목록에서 비즈니스층이다.
할 수 있는 사람을 제안 최고의 접근 구현을 지연 로드에서 이 scenatrio?또는 다른 방법으로 구현하는 이 깨끗하게?
나는 현재 사용하는 Visual Studio2005.NET2.0
편집:어떻게는 페이징에 사용될 이습니까?
해결책
LINQ에서 SQL은 귀하의 상황에서 의미가있는 것 같습니다.
그렇지 않으면 어떤 이유로 든 linq to sql을 사용하고 싶지 않다면 (예 : .net 2.0에 있습니다) DataReader
적절한 개체로 변환합니다.
IEnumerator<MyObject> ReadDataReader() {
while(reader.MoveNext())
yield return FetchObject(reader);
}
다른 팁
모든 데이터를 한 번에 가져와야합니까? 페이징을 고려할 수 있습니다.
페이 될 수 있습니다 최고의 솔루션입니다.사용하는 경우에는 SQL Server2005 년이나 더 있었는 새로운 기능이 추가되었습니다. 를 시작():
WITH MyThings AS
(
SELECT ThingID, DateEntered,
ROW_NUMBER() OVER (ORDER BY DateEntered) AS 'RowNumber'
FROM dbo.Things
)
SELECT *
FROM ThingDetails
WHERE RowNumber BETWEEN 50 AND 60;
가 예 데이비드 헤이든 어떤 도움을 보여주는 SQL.
이 방법을 줄이는 레코드 수를 반환을 줄이고,전반적인 부하다.는 뜻 당신이해야 할 것입니다 좀 더 추적 당신의 순서에 기록이지만,그것은 노력이 가치가 있습니다.
표준 페이징 기술을 필요한 모든 것을 돌아와에서 데이터베이스 및 그런 다음 필터링에서 중간 계층,또는 클라이언트에게 계층(코드김)이 방법을 줄일 기록 더 다루기 쉬운 부분 집합.