Gli elementi restituiti dalla query Linq-to-Entities sono trasmessi dal DB uno alla volta o vengono recuperati tutti contemporaneamente?

2

Gli elementi restituiti dalla query Linq-to-Entities sono trasmessi dal database uno alla volta (così come sono richiesti) o vengono recuperati tutti contemporaneamente:

    SampleContext context = new SampleContext(); // SampleContext derives from ObjectContext
    var search = context.Contacts;

    foreach (var contact in search)
    {
       Console.WriteLine(contact.ContactID); // is each Contact retrieved from the DB 
                                             // only when foreach requests it?
    }

grazie in anticipo

    
posta carewithl 29.10.2012 - 22:09
fonte

1 risposta

2

Vengono recuperati utilizzando una query. Il tuo esempio esegue una semplice selezione per tutte le righe della tabella Contatti.

Lo streaming sarebbe altamente inefficace.

Ma questo è solo per la query stessa. Potrebbe esserci un carico lento coinvolto per le entità di navigazione memorizzate nelle proprietà o nella raccolta di entità. Questi vengono caricati su richiesta mentre li accedete. Ciò potrebbe causare un famoso problema N + 1.

    
risposta data 29.10.2012 - 22:15
fonte

Leggi altre domande sui tag