2010-05-05 3 views
1

. В этом случае, который касается меня в этом сообщении, используется итерация по большому числу объектов (100K +), возвращаемых из запроса.Поддерживает ли инфраструктура объекта ObjectContext ссылки после повторения результатов

Учитывая следующий фрагмент кода:

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

В этом примере ясно, что экземпляр клиента не требуется после вызова 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, это будет.

Смежные вопросы