讲解之前,先来看一下我们的数据库结构:班级表 学生表

延迟加载

//延迟加载
using (var db = new Entities())
{
//查询班级
var classes = (from v in db.Classes
where v.ClassName == "机电10501"
select v).Single();
if (classes.Student != null)
{
//遍历该班级所有学生
foreach (var st in classes.Student)
{
ObjectDumper.Write(st.StudentName);
}
}
}

追踪SQL语句:

说明:主表使用.运算符调用从表都是延迟加载 导航属性需要设置为(virtual)
此处执行了两句SQL 先查询班级表->再查询学生表

不恰当的使用延迟加载会发送很多多余的sql

演示程序:遍历所有班级和学生

using (var db = new Entities())
{
//遍历班级
foreach(var cls in db.Classes)
{
Console.WriteLine("========="+cls.ClassName);
//遍历该班级所有学生
foreach (var st in cls.Student)
{
ObjectDumper.Write(cls.ClassName + "-" + st.StudentName);
}
}
}

追踪SQL语句:

说明:此处执行了5条SQL语句,先查询所有班级,然后根据每个班级ID 查询 各班学生。

关闭延迟加载有两种方式:

方法一:去掉Virtual修饰 如图

执行代码:

结果:

此处只执行了一条SQL,所以未加载出学生信息。

方法二:在Entities上下本类构造函数中调用 Configuration.LazyLoadingEnabled =false

执行结果相同:

【EF学习笔记06】----------加载关联表的数据 延迟加载的更多相关文章

  1. 【EF学习笔记08】----------加载关联表的数据 显式加载

    显式加载 讲解之前,先来看一下我们的数据库结构:班级表 学生表 加载从表集合类型 //显示加载 Console.WriteLine("=========查询集合===========&quo ...

  2. 【EF学习笔记07】----------加载关联表的数据 贪婪加载

    讲解之前,先来看一下我们的数据库结构:班级表 学生表 贪婪加载 //贪婪加载 using (var db = new Entities()) { var classes = db.Classes.Wh ...

  3. [WPF学习笔记]动态加载XAML

    好久没写Blogs了,现在在看[WPF编程宝典],决定开始重新写博客,和大家一起分享技术. 在编程时我们常希望界面是动态的,可以随时变换而不需要重新编译自己的代码. 以下是动态加载XAML的一个事例代 ...

  4. 学习笔记TF015:加载图像、图像格式、图像操作、颜色

    TensorFlow支持JPG.PNG图像格式,RGB.RGBA颜色空间.图像用与图像尺寸相同(height*width*chnanel)张量表示.通道表示为包含每个通道颜色数量标量秩1张量.图像所有 ...

  5. Away3D 学习笔记(一): 加载3DS格式的模型文件

    加载外部的3DS文件分为两种: 1: 模型与贴图独立于程序的,也就是从外部的文件夹中读取 private function load3DSFile():Loader3D { loader = new ...

  6. flutter源码学习笔记-图片加载流程

    本文基于1.12.13+hotfix.8版本源码分析. 0.大纲 Image ImageProvider 图片数据加载 ImageStream.ImageStreamCompleter 缓存池 Pai ...

  7. Unity3D学习笔记9——加载纹理

    目录 1. 概述 2. 详论 2.1. Resources方式 2.2. API方式 2.3. Web方式 1. 概述 理论上,Unity中加载纹理并没有什么难度,只需要将图片放置在Assets文件夹 ...

  8. 【EF学习笔记05】----------操作内存中的数据

    SingleOrDefault实验 //SingleOrDefault实验 using (var db = new Entities()) { var classes = new Classes() ...

  9. Servlet学习笔记(二):表单数据

    很多情况下,需要传递一些信息,从浏览器到 Web 服务器,最终到后台程序.浏览器使用两种方法可将这些信息传递到 Web 服务器,分别为 GET 方法和 POST 方法. 1.GET 方法:GET 方法 ...

随机推荐

  1. Android快捷便利但不常被使用的原生工具类

    Android快捷便利但不常被使用的原生工具类 Android SDK原生 API中,有一些常用的工具类,运用得当可以省事省力省时,何况还是Android官方提供的,现在收集整理一些出来.DateUt ...

  2. activity 和 生命周期: 消息通信

    实际上关于activity大概流程已经了解了,在深入的话方向应该是ams的处理操作和界面创建和view绘制.这些话题之后再谈,activity是一个gui程序,其中离不开的就是消息通讯,也就是在消息循 ...

  3. 2016.1.4~2016.1.7真题回顾!-- HTML5学堂

    2016.1.4~2016.1.7真题回顾!-- HTML5学堂 2015悄然而逝,崭新的2016随即而行!生活需要新鲜感,学习JavaScript的过程需要有成就感!成就感又是来自于每一天的不断练习 ...

  4. 【转载】ANSYS动力学分析-瞬态分析

    原文地址:http://www.cnblogs.com/ylhome/archive/2009/12/02/1615172.html 三种求解方法 瞬态动力学分析可采用三种方法:完全(Full)法.缩 ...

  5. Linux 安装 node

    在 Linux 上安装 node,使用 Linux 编译后的版本最佳. 1.进入 node 官网,找到 Linux 版本下载,这里我们右键复制下载地址即可. 2.在 Linux 上,使用命令 curl ...

  6. spl_autoload_register更改框架文件引用模式

    今天单点登陆要用到 spl_autoload_register,但是YII的Yii::autoload在包含失败的时候会抛异常,就不会执行(spl_autoload_call)其他spl_autolo ...

  7. 转载:使用命令行启动VirtualBox虚拟机

    使用命令行启动VirtualBox虚拟机 装上VirtualBox就琢磨着如何让它开机自动启动,又或者能够通过命令行的形式直接启动指定的虚拟机. 看了下VirtualBox的官方文档,发现有一个命令可 ...

  8. Swagger使用总结

    Swagger使用总结 1. Swagger是什么? 官方说法:Swagger是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作 ...

  9. shell 判断条件

    [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真. [ ...

  10. 关于jsp中response.sendRedirect显示错误

    今天在jsp中作判断时,当不同条件时利用response.sendRedirect(“url”)来转向不同的页面,首先是判断验证码,当错误时就转向错误页面:当正确时,才进行用户名和密码的判断,同样也r ...