显式加载

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

加载从表集合类型

//显示加载
Console.WriteLine("=========查询集合===========");
using (var db = new Entities())
{
var query = from v in db.Classes
where v.ClassName == "机电10501"
select v;
var cls = query.Single();
db.Entry(cls).Collection(v => v.Student).Load();//加载集合使用Collection方法
Console.WriteLine("==========="+cls.ClassName);
foreach (var stu in cls.Student)
{
Console.WriteLine(stu.StudentName);
} //IsLoaded方法判断数据是否已经加载
Console.WriteLine(db.Entry(cls).Collection(v => v.Student).IsLoaded);
}

追踪SQL语句

说明:此处执行了2条SQL,先查询班级 再查询该班级学生

加载集合使用Collection方法,Entry的参数为单个实体

执行结果:

加载关联表单个实体

//显示加载
Console.WriteLine("=========查询单个实体===========");
using (var db = new Entities())
{
var student = db.Student.First();
db.Entry(student).Reference(v => v.Classes).Load();//加载单个实体使用Reference方法
Console.WriteLine(student.StudentName);
Console.WriteLine(student.Classes.ClassName);
}

追踪SQL语句

说明:此处执行2条SQL,先查询第一个学生 top (1),再查询该学生班级。

说明:显式加载不需要标记为virtual

按需加载 只查询部分字段

//按需查询
using (var db = new Entities())
{
var query = from v in db.Student
select new
{
id=v.StudentID,
name=v.StudentName
};
foreach (var st in query)
{
ObjectDumper.Write(st);
}
}

追踪SQL语句:

说明:生成的SQL语句只查询了 StudentID 和 StudentName 两个字段。

【EF学习笔记08】----------加载关联表的数据 显式加载的更多相关文章

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

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

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

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

  3. 【EF学习笔记06】----------加载关联表的数据 延迟加载

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

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

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

  5. Ext.Net学习笔记08:Ext.Net中使用数据

    之前的七篇文章都是介绍Ext.Net较为基础的东西,今天的这一篇将介绍数据的一些用法,包括XTemplate绑定数据.Store(Modal.Proxy).ComboBox的用法等. XTemplat ...

  6. 【Arduino学习笔记08】使用串口监视器显示数据

    代码及相关说明: 1 // 示例:读取模拟输入并显示在串口监视器中 2 3 const int ANALOG_IN = 0; 4 int val = 0; 5 6 void setup(){ 7 Se ...

  7. EF如何操作内存中的数据以及加载相关联表的数据:延迟加载、贪婪加载、显示加载

    之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需要用的,这个系列讲讲如何使用EF操作数据库.老版本的EF主要是通过Ob ...

  8. EF学习笔记(八):更新关联数据

    学习笔记主目录链接:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上一篇链接:EF学习笔记(七):读取关联数据 本篇原文链接:Updating Related Data 本篇主要考 ...

  9. 【EF学习笔记10】----------主从表级联操作

    主从表 级联新增 Console.WriteLine("=========主从表 级联新增=========="); using (var db = new Entities()) ...

随机推荐

  1. Nested List Weight Sum -- LeetCode 339

    Given a nested list of integers, return the sum of all integers in the list weighted by their depth. ...

  2. 68. 蓄水池抽样(Reservoir Sampling)

    [本文链接] http://www.cnblogs.com/hellogiser/p/reservoir-sampling.html 问题起源于编程珠玑Column 12中的题目10,其描述如下: H ...

  3. Jena TDB 102

    1 Introduction TDB is a RDF storage of Jena. official guarantees and limitations TDB support full ra ...

  4. pycharm安装

    license server http://idea.lanyus.com

  5. Jqgrid 数据格式化配置

    默认格式化 $jgrid = { formatter : { integer : {thousandsSeparator: " ", defaultValue: '0'}, num ...

  6. php:上传多个文件

    <?php class upload {    public $files;    public $seterror;    public $allowtype;    public $file ...

  7. Python asyncio库的学习和使用

    因为要找工作,把之前自己搞的爬虫整理一下,没有项目经验真蛋疼,只能做这种水的不行的东西...T  T,希望找工作能有好结果. 之前爬虫使用的是requests+多线程/多进程,后来随着前几天的深入了解 ...

  8. 读取 RSSI

    在 TI 给的 SimpleBleCentral demo 里,读取 RSSI 的原理是:按 CC2540EM 的下键,然后调用 GapCentralRole 里的函数,启动定时器,不断向 OSAL ...

  9. 颤抖吧,骚年们,2016年末最牛逼的sql语句

    select channel_name,from_unixtime(createTime,'%Y-%m-%d') as tdate,count(deviceid) '安装量',count(case w ...

  10. cookie,session,sessionid

    cookie,session,sessionid http协议是无状态的,意思是每次请求的状态不会保存.因此,产生了cookie,session之类保存会话状态的机制.1.什么是cookiecooki ...