贪婪加载是指查询一个类型实体的时候同时查询与实体关联的类型
通过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