ASP.NET Core8.0学习笔记(二十六)——EF Core Include导航数据加载——显式加载

一、显式加载概述

1.应用场景:在前面使用Include方法加载依赖实体时,在加载主体实体时,依赖实体也会一并自动加载。但是某些时候我们只需要查询主体实体,没有必要加载依赖实体,或者说只有我们需要依赖实体时再去加载依赖实体。这就需要使用显式加载。

二、使用显式加载

1.直接查询主体实体实体,若不使用Include方法,则依赖实体不会被赋值,已经在第数据预加载一节中验证过。

2.若已经拿到了主体实体,在经过一系列操作后,若又需要加载对应的依赖实体,则需要使用DbContext.Entry(T Entity).Collection<TDependencyEntity >(Lambda).Load()来进行数据加载。注意此时使用显示加载数据库会执行多次加载,在第一次加载完主体实体后,再执行一次对依赖实体的加载。且每执行一次就会查一次数据库

运行:

三、显式加载数据过滤

1.使用显式数据加载,默认也会加载主体实体下的所有依赖实体。但是有时我们只需要加载我们所需要的数据。此时就需要使用Query()方法来获取支持查询的依赖实体数据结构,而不是Load()方法,Load()方法会加载所有数据且返回值为void,无法进行任何操作。使用Query()方法其返回值是IQueryable,其中T是导航属性的数据类型。以加载辽宁省下的地级市为例:

运行:

由于返回值为IQueryable的数据,所以还可以像普通的返回序列一样执行其他查询操作:

运行:

相关推荐
小钻风336642 分钟前
Redis初阶学习
数据库·redis·缓存
郏国上1 小时前
如何把指定阿里云文件夹下的所有文件移动到另一个文件夹下,移动文件时把文件名称(不包括文件后缀)进行md5编码
数据库·阿里云·云计算
Akshsjsjenjd1 小时前
Ansible 核心功能:循环、过滤器、判断与错误处理全解析
java·数据库·ansible
kiwixing2 小时前
集群无法启动CRS-4124: Oracle High Availability Services startup failed
java·运维·数据库·mysql·postgresql·oracle
Hygge-star2 小时前
【MySQL自学】SQL主键使用误区:你必须知道的关键细节
数据库·sql·mysql·数据分析·学习方法
向上的车轮2 小时前
SQL标准有哪些?由那个国际组织管理?国产数据库在SQL标准上的贡献有哪些?
数据库·sql·sql标准
周杰伦fans2 小时前
C# 代码中的“熵增”概念
大数据·c#
Rhys..2 小时前
python sqlalchemy模型的建立
jvm·数据库·python·oracle
neo_Ggx232 小时前
SQL 函数:使用 REPLACE进行批量文本替换
数据库·sql
赵得C3 小时前
Spring Boot 实现数据库表变更监听的 Redis 消息队列方案
数据库·spring boot·redis·监听