默认情况下LINQ和Entity Framework的加载程度如何?

时间:2013-02-27 19:18:32

标签: c# .net linq entity-framework entity-framework-5

我是LINQ和实体框架的新手。我一直在使用以下内容从数据库中获取集合:

var Publications = from pubs in db.RecurringPublications
                   select pubs;

Publications表通过外键链接到其他表。我一直用它来引用这样的属性:

Publications.Single().LinkedTable.LinkedTableColumn

有时甚至更进一步:

Publications.Single().LinkedTable.LinkedTable.LinkedLinkedTableColumn

我知道你可以指定延迟加载或急切加载,我想知道默认情况下它是如何处理的。默认情况下是否有最大深度?它是否计算出在编译时使用了多少个连接?

1 个答案:

答案 0 :(得分:5)

它只会急切地加载特定表格中的内容。

var Publications = from pubs in db.RecurringPublications
                   select pubs;

只会从您的RecurringPublications表中获取数据。您可以指定是否要加载其他属性,但如果您没有指定任何内容,它只会提供您要求的内容 - 仅此而已。

Publications.Single().LinkedTable.LinkedTableColumn

延迟加载您的LinkedTableColumn - 现在如果您的返回是可查询的(并且到目前为止),它将进行连接并返回单个SQL查询。

但是,如果已经枚举了该呼叫,它将进行第二次呼叫。

Blog post到MSDN获取信息