2009-02-17 58 views

回答

3

是的,我相信它的确如此。它还具有“加载”功能/语义,允许您使用霰弹枪方式批量加载多件事物。当你知道你需要相关数据以及主要实体时,这很有用,就像预先缓存渲染单个网页所需的所有数据一样。

3

是的,延迟加载是默认启用的。检查出this article

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将自动进行连接,并在一个单一的数据库查询负载从两个记录的信息。

相关问题