我了解过懒加载、使用 .include 进行急切加载和使用 .load() 进行显式加载,但是有一点让我困惑,就是当你在查询中进行投影并显式请求导航属性时:
var address = from a in context.Addresses
select {a, Name = a.Contact.Name}
这里的Contact是一个导航属性,它连接到一个联系人实体。
我尝试了懒加载和急加载两种方式,都可以正常工作。我想知道当我像这样请求数据时,我是在进行急加载还是延迟加载?我的理解是,只会向数据库发出一次查询,这意味着它是急加载,但在这种情况下,只会加载"Name"属性,而不是如果我使用context.Addresses.include("Contact")则会加载整个Contact实体。这样的查询是否比使用.include()进行急加载更有效率?
希望能得到一些澄清。