2015-01-19 3 views
0

나는 내가NPoco/Petapoco : 가져 오기위한 데이터 집합이 너무 커서 <T>

List<Poco> lp = Fetch<Poco>("Select * from X"); 

내 프로그램을 통해 데이터베이스에서 검색 한 데이터 세트의 각 레코드를 통해 처리하는 몇 가지 코드가 여기 충돌이 메모리 부족 예외입니다. 구식 방식을 사용하면 다음과 같이됩니다. 독자를 생성 한 다음 검색된 각 레코드를 반복합니다. Npoco/Petapoco로 이런 효과를 얻는 가장 좋은 방법은 무엇입니까?

답변

3

eager-loading (모든 결과가 메모리에 한 번에로드되는)이 아닌 lazy-loading (각 결과가 열거 형을 반복 할 때 메모리에로드되는)이 필요합니다.

NPoco seems to use Fetch for eager-loading and Query for lazy-loading.

쿼리 방법을 사용해보십시오.

+0

반복 할 때 목록 개체에 추가되지 않겠습니까? 이를 방지하기 위해 객체를 삭제해야합니까? – erict

+0

쿼리는 열거 형을 반환합니다. 구식 리더가 검색된 각 레코드를 반복하는 방식과 마찬가지로 열거 형을 반복 할 때 결과가 하나씩 반환되어야합니다. 다른 곳에서 개체를 참조하지 않으면 평소대로 GC로 처리해야합니다. – MatthewKing