2010-05-05 3 views
1

이 게시물과 관련이있는 유스 케이스는 쿼리에서 반환 된 많은 수의 엔티티 (100K 이상)를 반복하는 것을 포함합니다.엔티티 프레임 워크 ObjectContext는 결과를 반복 한 후 참조를 유지합니까?

을 감안할 때 다음과 같은 코드 :

var query = from c in context.Customers select c; 
foreach(var customer in query) 
    printCustomerStatement(customer); 

이 예에서 IT는 고객 인스턴스가 printCustomerStatement 호출 후 필요하지 않은 것이 분명하다. ObjectContext가 관계없이 참조를 유지합니까? 내 기대는 그렇게하지 않을 것이라는 것이다. 이 foreach는 전진 전용 읽기 전용 열거 자 메서드 호출처럼 동작합니다.

답변

3

MergeOption에 따라 다릅니다.

이 작업을 수행 할 경우

context.Customers.MergeOption = MergeOption.NoTracking; 
var query = from c in context.Customers select c; 
foreach(var customer in query) 
    printCustomerStatement(customer); 

... 다음 상황에 맞는 그 참조를 저장하지 않습니다.

MergeOptionAppendOnly 일 때 기본값으로 설정됩니다.