我是LINQ和实体框架的新手。我一直在使用以下内容从数据库中获取集合:
var Publications = from pubs in db.RecurringPublications
select pubs;
Publications表通过外键链接到其他表。我一直用它来引用这样的属性:
Publications.Single().LinkedTable.LinkedTableColumn
有时甚至更进一步:
Publications.Single().LinkedTable.LinkedTable.LinkedLinkedTableColumn
我知道你可以指定延迟加载或急切加载,我想知道默认情况下它是如何处理的。默认情况下是否有最大深度?它是否计算出在编译时使用了多少个连接?
答案 0 :(得分:5)
它只会急切地加载特定表格中的内容。
var Publications = from pubs in db.RecurringPublications
select pubs;
只会从您的RecurringPublications表中获取数据。您可以指定是否要加载其他属性,但如果您没有指定任何内容,它只会提供您要求的内容 - 仅此而已。
Publications.Single().LinkedTable.LinkedTableColumn
延迟加载您的LinkedTableColumn - 现在如果您的返回是可查询的(并且到目前为止),它将进行连接并返回单个SQL查询。
但是,如果已经枚举了该呼叫,它将进行第二次呼叫。
Blog post到MSDN获取信息