안녕하세요!EF의 메모리 소모
사실 저는 EF atm으로 조금 놀고 있습니다. 여러분의 도움이 필요합니다.
다음 시나리오 : 많은 데이터가있는 테이블이 있습니다. EF를 통해이 테이블을 쿼리하면 모든 레코드가 메모리에로드됩니다.
예 :
var counter = default(int);
using (var myEntities = new MyEntities())
{
foreach (var record in myEntities.MySpecialTable)
{
counter++;
}
}
그래서, MySpecialTable의 모든 레코드를 통해 실행하고 counter
까지를 계산합니다. Taskmanager 또는 내 앱의 메모리 사용량을 보여주는 기타 정보를 볼 때 400MB가 표시됩니다. (데이터 때문에)
또 다른 시간에 테이블을 실행하면 메모리 사용량이 두 배가됩니다.
GC를 이미 호출하려고했지만 작동하지 않습니다.
각 실행의 모든 레코드가 메모리 어딘가에 저장되는 이유는 무엇입니까? 어디서 저장됩니까? EF- 쿼리를 DataReader처럼 작동시키는 방법이 있습니까? EF만큼 우아한 ORM이 있습니까?
편집 :
아니, 난 그런 수를 안할거야 ...이 단지 모든
님께 서 같은 매력적인 작품을 만드세요! 정말 감사합니다! –