2009-02-17 14 views

Respuesta

3

Sí, creo que sí. También tiene una característica/semántica de "carga con" que le permite cargar varias cosas en un enfoque de escopeta. Esto es útil cuando sabes que necesitarás datos relacionados junto con la entidad principal desde el principio, como precachear todos los datos que necesitarás para representar una sola página web, etc.

3

Sí, lazy loading está habilitado por defecto. Consulte this article.

12

Depende de cómo se defina "lazy-load".

Si dice

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. 

entonces eso sería precisamente "lazying carga" como el segundo objeto no se sale de la base de datos hasta que se hace referencia. Sin embargo, esto requerirá dos consultas de base de datos.

Sin embargo, si tuviera que decir,

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

Entonces LINQ hará automáticamente la unión y la carga de la información de ambos registros en una sola consulta de base de datos.