2

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

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

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

Publications.Single().LinkedTable.LinkedTableColumn

有时甚至更进一步:

Publications.Single().LinkedTable.LinkedTable.LinkedLinkedTableColumn

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

4

1 回答 1

5

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

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

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

Publications.Single().LinkedTable.LinkedTableColumn

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

但是,如果该调用已经被枚举,它将进行第二次调用。

博客文章到 MSDN 以获取信息

于 2013-02-27T19:21:35.167 回答