博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EntityFramework 学习 一 Eager Loading
阅读量:4324 次
发布时间:2019-06-06

本文共 3927 字,大约阅读时间需要 13 分钟。

贪婪加载是指查询一个类型实体的时候同时查询与实体关联的类型

 

通过Include()方法实现

using (var context = new SchoolDBEntities()){    var stud1 = (from s in context.Students.Include("Standard")                where s.StudentName == "Student1"                select s).FirstOrDefault
();}

 

 

using (var ctx = new SchoolDBEntities()){    var stud1 = ctx.Students.Include("Standard")                        .Where(s => s.StudentName == "Student1").FirstOrDefault
(); }
SELECT TOP (1) [Extent1].[StudentID] AS [StudentID], [Extent1].[StudentName] AS [StudentName], [Extent2].[StandardId] AS [StandardId], [Extent2].[StandardName] AS [StandardName], [Extent2].[Description] AS [Description]FROM  [dbo].[Student] AS [Extent1]LEFT OUTER JOIN [dbo].[Standard] AS [Extent2] ON [Extent1].[StandardId] = [Extent2].[StandardId]WHERE 'Student1' = [Extent1].[StudentName]

 

 

using System;using System.Data.Entity;    class Program{    static void Main(string[] args)    {            using (var ctx = new SchoolDBEntities())        {            var stud1 = ctx.Students.Include(s => s.Standard)                                .Where(s => s.StudentName == "Student1")                                .FirstOrDefault
(); } }}

 

 

SELECT TOP (1) [Extent1].[StudentID] AS [StudentID], [Extent1].[StudentName] AS [StudentName], [Extent2].[StandardId] AS [StandardId], [Extent2].[StandardName] AS [StandardName], [Extent2].[Description] AS [Description]FROM  [dbo].[Student] AS [Extent1]LEFT OUTER JOIN [dbo].[Standard] AS [Extent2] ON [Extent1].[StandardId] = [Extent2].[StandardId]WHERE 'Student1' = [Extent1].[StudentName]

Load multiple levels of related entities:

using (var ctx = new SchoolDBEntities()){    var stud1 = ctx.Students.Include("Standard.Teachers")                        .Where(s => s.StudentName == "Student1")                        .FirstOrDefault
();}
using (var ctx = new SchoolDBEntities()){    var stud1 = ctx.Students.Include(s => s.Standard.Teachers)                        .Where(s => s.StudentName == "Student1")                        .FirstOrDefault
();}
SELECT [Project2].[StudentID] AS [StudentID], [Project2].[StudentName] AS [StudentName], [Project2].[StandardId] AS [StandardId], [Project2].[StandardName] AS [StandardName], [Project2].[Description] AS [Description], [Project2].[C1] AS [C1], [Project2].[TeacherId] AS [TeacherId], [Project2].[TeacherName] AS [TeacherName], [Project2].[StandardId1] AS [StandardId1]FROM ( SELECT     [Limit1].[StudentID] AS [StudentID],     [Limit1].[StudentName] AS [StudentName],     [Limit1].[StandardId1] AS [StandardId],     [Limit1].[StandardName] AS [StandardName],     [Limit1].[Description] AS [Description],     [Project1].[TeacherId] AS [TeacherId],     [Project1].[TeacherName] AS [TeacherName],     [Project1].[StandardId] AS [StandardId1],     CASE WHEN ([Project1].[TeacherId] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C1]    FROM   (SELECT TOP (1) [Extent1].[StudentID] AS [StudentID], [Extent1].[StudentName] AS [StudentName], [Extent1].[StandardId] AS [StandardId2], [Extent2].[StandardId] AS [StandardId1], [Extent2].[StandardName] AS [StandardName], [Extent2].[Description] AS [Description]        FROM  [dbo].[Student] AS [Extent1]        LEFT OUTER JOIN [dbo].[Standard] AS [Extent2] ON [Extent1].[StandardId] = [Extent2].[StandardId]        WHERE 'updated student' = [Extent1].[StudentName] ) AS [Limit1]    LEFT OUTER JOIN  (SELECT         [Extent3].[TeacherId] AS [TeacherId],         [Extent3].[TeacherName] AS [TeacherName],         [Extent3].[StandardId] AS [StandardId]        FROM [dbo].[Teacher] AS [Extent3]        WHERE [Extent3].[StandardId] IS NOT NULL ) AS [Project1] ON [Limit1].[StandardId2] = [Project1].[StandardId])  AS [Project2]ORDER BY [Project2].[StudentID] ASC, [Project2].[StandardId] ASC, [Project2].[C1] ASC

 

转载于:https://www.cnblogs.com/lanpingwang/p/6623052.html

你可能感兴趣的文章
阶段3 2.Spring_07.银行转账案例_9 基于子类的动态代理
查看>>
阶段3 2.Spring_08.面向切面编程 AOP_1 AOP的概念
查看>>
阶段3 2.Spring_08.面向切面编程 AOP_4 spring基于XML的AOP-配置步骤
查看>>
阶段3 2.Spring_07.银行转账案例_10 使用动态代理实现事务控制
查看>>
阶段3 2.Spring_08.面向切面编程 AOP_8 spring中的环绕通知
查看>>
阶段3 2.Spring_08.面向切面编程 AOP_10 总结和作业安排
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_2 JdbcTemplate的概述和入门
查看>>
阶段3 2.Spring_08.面向切面编程 AOP_7 通用化切入点表达式
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_6 JdbcDaoSupport的使用以及Dao的两种编写方式...
查看>>
阶段3 2.Spring_08.面向切面编程 AOP_9 spring基于注解的AOP配置
查看>>
阶段3 2.Spring_10.Spring中事务控制_1 基于XML的AOP实现事务控制
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_1 今日课程内容介绍
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_3 JdbcTemplate在Dao中的使用
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_5 JdbcTemplate在spring的ioc中使用
查看>>
阶段3 2.Spring_10.Spring中事务控制_2 作业-基于注解的AOP实现事务控制及问题分析_上...
查看>>
阶段3 2.Spring_10.Spring中事务控制_5 spring事务控制的代码准备
查看>>
阶段3 2.Spring_10.Spring中事务控制_4 spring中事务控制的一组API
查看>>
阶段3 2.Spring_10.Spring中事务控制_7 spring基于注解的声明式事务控制
查看>>
阶段3 2.Spring_10.Spring中事务控制_6 spring基于XML的声明式事务控制-配置步骤
查看>>
阶段3 2.Spring_10.Spring中事务控制_9 spring编程式事务控制1-了解
查看>>