2010-05-05 4 views
1

le cas d'utilisation qui m'intéresse dans ce post implique l'itération sur un grand nombre d'entités (100K +) renvoyées à partir d'une requête.La structure d'entité ObjectContext conserve-t-elle des références après avoir itéré sur les résultats

Compte tenu de l'extrait de code suivant:

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

Dans cet exemple, il est clair que l'instance du client n'est pas nécessaire après l'appel à printCustomerStatement. Le ObjectContext gardera-t-il une référence à cela indépendamment? Mon attente est que ce ne serait pas le cas. et que cette foreach se comporterait comme un appel de méthode d'énumérateur en lecture seule vers l'avant uniquement.

Répondre

3

Dépend de la requête MergeOption.

Si vous faites ceci:

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

... alors le contexte ne stocke pas ces références.

Avec la valeur par défaut MergeOption de AppendOnly, il sera.

Questions connexes