2014-03-12 4 views
0

DB에서 대량 데이터 (156000 레코드)를 선택하려면 LINQ를 사용하고 있습니다. 그러나 다음 오류가 발생합니다. 다음과 같이 선택 쿼리를 사용하여메모리 부족 예외 - Linq

An exception of type 'System.OutOfMemoryException' occurred in System.Data.Entity.dll but was not handled in user code 

암,

var allCompanies = from s in db.Data.AsNoTracking().ToList() 
          select s; 

이 문제 기록의 많은 양이 검색되는 것입니다

+0

'ToList()'에 의해 메모리 내의 전체 테이블을 구체화하려고합니다. 필요한 필드 만 선택하거나 더 나은 방법으로 데이터를 구체화하기 전에 필터링하십시오. – StuartLC

+0

안녕하세요 stuart, 답장을 보내 주셔서 감사합니다. 하지만 만약 내가 .ToList() 제거한 다음 동일한 오류가 발생합니다 – Sathish

+0

제쳐두고, AsNoTracking()'중복 된 행의 깊은 복사본을로드합니다. "(http://stackoverflow.com/questions/17097736/entity-framework- asnotracking-breaks-call-to-distinct), 이것이 당신의 질의와 관련이 있는지 확실하지 않은가요? – StuartLC

답변

2

를 해결하기 위해 도와주세요. 더 많은 메모리가 필요할 수 있습니다. 이 프로그램이 실행되는 동안 시스템에서 사용 가능한 메모리 양을 확인 했습니까?

한 번에 특정 고정 행을 검색하여 데이터를 필터링하거나 페이지 매김을 사용하고자 할 수 있습니다.

가능한 경우 검색 후 데이터 처리를 고려하는 경우 저장 프로 시저에서 처리 할 수도 있습니다.