Стремительная загрузка — это процесс, при котором запрос для одного типа объекта также загружает связанные объекты как часть запроса. Стремительная загрузка достигается с помощью метода Include .
Это означает, что запрашиваемые связанные данные будут возвращены вместе с результатами запроса из базы данных. Существует только одно подключение к источнику данных, больший объем данных возвращается в начальном запросе.
Например, при запросе студентов, загружайте их зачисления. Студенты и их зачисления будут получены в одном запросе.
Давайте рассмотрим следующий пример, в котором все учащиеся с соответствующими зачислениями извлекаются из базы данных с помощью активной загрузки.
class Program { static void Main(string[] args) { using (var context = new UniContextEntities()) { // Load all students and related enrollments var students = context.Students .Include(s ⇒ s.Enrollments).ToList(); foreach (var student in students) { string name = student.FirstMidName + " " + student.LastName; Console.WriteLine("ID: {0}, Name: {1}", student.ID, name); foreach (var enrollment in student.Enrollments) { Console.WriteLine("Enrollment ID: {0}, Course ID: {1}", enrollment.EnrollmentID, enrollment.CourseID); } } Console.ReadKey(); } } }
Когда приведенный выше код скомпилирован и выполнен, вы получите следующий вывод.
ID: 1, Name: Ali Alexander Enrollment ID: 1, Course ID: 1050 Enrollment ID: 2, Course ID: 4022 Enrollment ID: 3, Course ID: 4041 ID: 2, Name: Meredith Alonso Enrollment ID: 4, Course ID: 1045 Enrollment ID: 5, Course ID: 3141 Enrollment ID: 6, Course ID: 2021 ID: 3, Name: Arturo Anand Enrollment ID: 7, Course ID: 1050 ID: 4, Name: Gytis Barzdukas Enrollment ID: 8, Course ID: 1050 Enrollment ID: 9, Course ID: 4022
Ниже приведены некоторые другие формы запросов на загрузку, которые можно использовать.
// Load one Student and its related enrollments var student1 = context.Students .Where(s ⇒ s.FirstMidName == "Ali") .Include(s ⇒ s.Enrollments).FirstOrDefault(); // Load all Students and related enrollments // using a string to specify the relationship var studentList = context.Students .Include("Enrollments").ToList(); // Load one Student and its related enrollments // using a string to specify the relationship var student = context.Students .Where(s ⇒ s.FirstMidName == "Salman") .Include("Enrollments").FirstOrDefault();
Несколько уровней
Также возможно загружать несколько уровней связанных объектов. Следующие запросы показывают примеры студентов, зачислений и курсов.
// Load all Students, all related enrollments, and all related courses var studentList = context.Students .Include(s ⇒ s.Enrollments.Select(c ⇒ c.Course)).ToList(); // Load all Students, all related enrollments, and all related courses // using a string to specify the relationships var students = context.Students .Include("Enrollments.Course").ToList();
Мы рекомендуем вам выполнить вышеприведенный пример пошагово для лучшего понимания.