2009-02-17 4 views

ответ

3

Да, я считаю, что так и есть. Он также имеет функцию «load with»/semantic, которая позволяет вам загружать несколько вещей в подход с дробовиком. Это полезно, когда вы знаете, что вам понадобятся связанные данные вместе с основным сущностью сразу с места в карьер, например, предварительно кэшировать все данные, необходимые для создания единой веб-страницы и т. Д.

12

Это зависит от того, как вы определяете «ленивую нагрузку».

Если вы говорите

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. 

Тогда это было бы именно «lazying нагрузки», как второй объект не извлекается из базы данных, пока не упоминаются. Однако это потребует двух запросов к базе данных.

Однако, если вы должны были сказать,

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

Тогда Linq будет автоматически делать соединения и загружать информацию из обеих записей в одном запросе к базе данных.