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

延迟加载

//延迟加载
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. OWL,以及XML,RDF

    Ontology来源于哲学词汇:存在论(也有翻译成本体论).RDF是一种不错的本体描述方式,我们可以定义根据对现实世界的理解针对某个领域定义词汇来描述这个领域的知识.但RDF与RDF不能定义同义词.反 ...

  2. UVA 12661(动态权值+最短路,dij)

    题意:赛车背景,给你n个节点,m条边的图以及起点和终点:其中每条边的信息包括u(起点),v(终点),a(开启的时间),b(关闭的时间),d(通过这条道路的时间):求最短通过的时间,其中车在进的时候,保 ...

  3. Windows 2012 装 Remote Desktop Organizer 无法连接到其他远程服务器

    一句话,版本太低 换Remote Desktop Organizer 1.4.5版本就ok 了

  4. GO RPC

    HTTP RPC SERVER CODE package main import ( "errors" "fmt" "net/http" & ...

  5. Smart210学习记录-----Linux i2c驱动

    一:Linux i2c子系统简介: 1.Linux 的 I2C 体系结构分为 3 个组成部分: (1) I2C 核心. I2C 核心提供了 I2C 总线驱动和设备驱动的注册.注销方法,I2C 通信方法 ...

  6. CentOS 7 编译安装 Code::Blocks

    CentOS 7 编译安装 Code::Blocks yum install cairo-devel yum install pango-devel yum install atk-devel yum ...

  7. C#中的GDI+图形绘制方法

    GDI+图形绘制方法 1.首先对于绘制图形,必须的先将命名空间导入:using System.Drawing.Drawing2D; 2.然后在一个事件中写入程序 首先先将Graphics这个对象实例化 ...

  8. HTTP协议详解--转载http://blog.csdn.net/gueter/article/details/1524447

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

  9. 一个链式调用 setTimeout的例子

    <div> 现在时间是:<input type="text" id="name1" size="16" value=&qu ...

  10. 单例设计模式getInstance()

    对象的实例化方法,也是比较多的,最常用的方法是直接使用new,而这是最普通的,如果要考虑到其它的需要,如单实例模式,层次间调用等等.   直接使用new就不可以实现好的设计好,这时候需要使用间接使用n ...