2009-02-17 11 views

risposta

3

Sì, lo credo. Ha anche una funzione "load with"/semantica che consente di caricare in batch diverse cose con un approccio shotgun. Questo è utile quando si sa avrete bisogno di dati correlati con l'entità principale destra fuori del blocco, come pre-cache tutti i dati di cui ha bisogno per rendere una singola pagina web ecc

3

Sì, lazy loading è abilitato di default. Controlla this article.

12

Dipende da come si definisce "lazy-load".

Se dici

var person = (from p in db.People 
       where p.PersonId = pid 
       select p).First(); 
var spouse = person.Spouse; // based on the SpouseId FK 
           // back into the People table. 

allora sarebbe proprio "lazying loading" come il secondo oggetto non si estrae dalla base di dati fino a quando non viene fatto riferimento. Ciò tuttavia richiederà due query di database.

Tuttavia, se si dovesse dire

var family = (from p in db.People 
       where p.PersonId = pid 
      select new 
       { 
       Name = p.Name, 
       SpouseName = p.Spouse.Name 
       }).First(); 

Poi Linq verrà automaticamente fare il join e caricare le informazioni da entrambi i record in una singola query di database.