首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >我是否可以同时使用渴望加载和延迟加载?

我是否可以同时使用渴望加载和延迟加载?
EN

Stack Overflow用户
提问于 2019-07-05 08:21:16
回答 1查看 209关注 0票数 0

我有一个延迟加载的模型类。直到现在,我总是使用懒惰加载,例如,加载一个学生的课程集合。

如果我想用所有已注册学生的集合加载所有课程,我是否可以使用Include()方法对延迟加载的属性进行急切加载?有什么副作用吗?

代码语言:javascript
代码运行次数:0
运行
复制
[ForeignKey("Id")]
public virtual ICollection<Students> Students { get; set; }
代码语言:javascript
代码运行次数:0
运行
复制
public IQueryable<Students> GetCoursesWithAllStudents()
{
     return db.Courses.Include(c => c.Students);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-05 10:20:01

可以,停那儿吧。Include()就是这样做的,它包括相关实体:它强制在正常情况下加载实体。您可以添加ThenInclude(),使其更深入关系阶梯,因为它允许加载与先前包含的实体相关的数据。

然而,返回的实体是梯子中最高的实体,而不是最新的实体。在下面的示例中,返回一个IQueryable<Professors>,加载Courses实体,在Courses中加载Students

代码语言:javascript
代码运行次数:0
运行
复制
public IQueryable<Professors> GetCoursesWithAllStudents()
{
     return db.Professors.Include(professor => professor.Courses)
                         .ThenInclude(course => course.Students);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56899258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档