Entity framework 实体框架5:延迟加载如何在不同类型的关系中工作?

Entity framework 实体框架5:延迟加载如何在不同类型的关系中工作?,entity-framework,lazy-loading,entity-relationship,asp.net-mvc-5,Entity Framework,Lazy Loading,Entity Relationship,Asp.net Mvc 5,我使用的是实体框架5,MVC4。我的用户具有以下关系: 用户配置文件:1对1关系。(一个用户有一个配置文件) 用户帖子:1对多关系。(一个用户有许多帖子) 用户角色:多对多关系(一个用户有多个角色,一个角色可能分配给多个用户) 我的问题是,根据这些关系的每种类型,延迟加载是如何工作的,以及“深度”有多深?当我从上下文中获取用户时,将加载什么 任何帮助都将不胜感激 延迟加载背后的思想是实体框架只加载您试图访问的信息。考虑以下事项: using (MyContext context = new My

我使用的是实体框架5,MVC4。我的
用户
具有以下关系:

用户配置文件
:1对1关系。(一个用户有一个配置文件)

用户帖子
:1对多关系。(一个用户有许多帖子)

用户角色
:多对多关系(一个用户有多个角色,一个角色可能分配给多个用户)

我的问题是,根据这些关系的每种类型,延迟加载是如何工作的,以及“深度”有多深?当我从上下文中获取用户时,将加载什么


任何帮助都将不胜感激

延迟加载背后的思想是实体框架只加载您试图访问的信息。考虑以下事项:

using (MyContext context = new MyContext())
{
    User myUser = context.Users.First();
}
在此示例中,仅加载
用户
对象。在首次访问相关实体之前,不会从数据库中检索它们

using (MyContext context = new MyContext())
{
    User myUser = context.Users.First();   // User is loaded from database

    Profile myProfile = myUser.Profile;    // Associated profile is loaded
}
在第二个示例中,有两个数据库调用—一个用于加载用户,另一个用于在首次访问概要文件时加载概要文件

using (MyContext context = new MyContext())
{
    User myUser = context.Users.First();   // User is loaded from database

    Profile myProfile = myUser.Profile;    // Associated profile is loaded
}
所有三种类型的关系(一对一、一对多、多对多)都具有相同的行为:相关对象在首次访问之前不会加载。

检查此文档: