【EF学习笔记06】----------加载关联表的数据 延迟加载
讲解之前,先来看一下我们的数据库结构:班级表 学生表

延迟加载
//延迟加载
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】----------加载关联表的数据 延迟加载的更多相关文章
- 【EF学习笔记08】----------加载关联表的数据 显式加载
		
显式加载 讲解之前,先来看一下我们的数据库结构:班级表 学生表 加载从表集合类型 //显示加载 Console.WriteLine("=========查询集合===========&quo ...
 - 【EF学习笔记07】----------加载关联表的数据 贪婪加载
		
讲解之前,先来看一下我们的数据库结构:班级表 学生表 贪婪加载 //贪婪加载 using (var db = new Entities()) { var classes = db.Classes.Wh ...
 - [WPF学习笔记]动态加载XAML
		
好久没写Blogs了,现在在看[WPF编程宝典],决定开始重新写博客,和大家一起分享技术. 在编程时我们常希望界面是动态的,可以随时变换而不需要重新编译自己的代码. 以下是动态加载XAML的一个事例代 ...
 - 学习笔记TF015:加载图像、图像格式、图像操作、颜色
		
TensorFlow支持JPG.PNG图像格式,RGB.RGBA颜色空间.图像用与图像尺寸相同(height*width*chnanel)张量表示.通道表示为包含每个通道颜色数量标量秩1张量.图像所有 ...
 - Away3D 学习笔记(一): 加载3DS格式的模型文件
		
加载外部的3DS文件分为两种: 1: 模型与贴图独立于程序的,也就是从外部的文件夹中读取 private function load3DSFile():Loader3D { loader = new ...
 - flutter源码学习笔记-图片加载流程
		
本文基于1.12.13+hotfix.8版本源码分析. 0.大纲 Image ImageProvider 图片数据加载 ImageStream.ImageStreamCompleter 缓存池 Pai ...
 - Unity3D学习笔记9——加载纹理
		
目录 1. 概述 2. 详论 2.1. Resources方式 2.2. API方式 2.3. Web方式 1. 概述 理论上,Unity中加载纹理并没有什么难度,只需要将图片放置在Assets文件夹 ...
 - 【EF学习笔记05】----------操作内存中的数据
		
SingleOrDefault实验 //SingleOrDefault实验 using (var db = new Entities()) { var classes = new Classes() ...
 - Servlet学习笔记(二):表单数据
		
很多情况下,需要传递一些信息,从浏览器到 Web 服务器,最终到后台程序.浏览器使用两种方法可将这些信息传递到 Web 服务器,分别为 GET 方法和 POST 方法. 1.GET 方法:GET 方法 ...
 
随机推荐
- Winform基础知识
			
1.关于登陆部分 this.DialogResult = DialogResult.OK; this.Close(); FrmLogin login = new FrmLogin(m_CurUser) ...
 - 用php完成数据库的增删改查
			
<?php//一.连接数据库$con = mysql_connect("localhost","root","");//二.验证是否连 ...
 - BLE Hacking:使用Ubertooth one扫描嗅探低功耗蓝牙
			
0×00 前言 低功耗蓝牙(Low Energy; LE),又视为Bluetooth Smart或蓝牙核心规格4.0版本.其特点具备节能.便于采用,是蓝牙技术专为物联网(Internet of Thi ...
 - 378. Kth Smallest Element in a Sorted Matrix
			
Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth ...
 - 数论 UVA 11388
			
这道题是关于两个数的最大公约数和最小公倍数的题目.给你两个数字g,l,分别表示最大公约数和最小公倍数.要求你找到两个数a,b,要求这两个数的最大公约数和最小公倍数为所给的两个数.如果存在多组数字符合这 ...
 - Android多媒体分析-通过MediaStore获取Audio信息
			
public void getAlldata() { ContentResolver cr = getApplication().getContentResolver(); if (cr == nul ...
 - 使用swipecard实现卡片视图左右滑动监听以及点击监听
			
前言: 大家好,今天给大家介绍安卓一种特别实用有很酷炫的组件swipecard,当然这并不是安卓爸爸创造的,这是国内的一个我认为是大牛的一个人随便写着玩儿搞出来了,我看了他的代码介绍已经很清晰了,但 ...
 - js 操作COOKE备忘
			
function getCookie(c_name) { if (document.cookie.length > 0) { c_start = document.cookie.indexOf( ...
 - Win32程序和控制台应用程序的项目互转设置
			
一般情况下,如果是windows程序,那么WinMain是入口函数,在VS2010中新建项目为"win32项目" 如果是dos控制台程序,那么main是入口函数,在VS2010中新 ...
 - php 二维数组(没啥技术含量)
			
<?php $cars = array( array('benchi',20,18), array('baoma',30,21), array('aodi',23,9) ); echo $car ...