Khung thực thể - Đang tải háo hức

Tải háo hức là quá trình theo đó truy vấn cho một loại thực thể cũng tải các thực thể liên quan như một phần của truy vấn. Việc tải hứng thú đạt được bằng cách sử dụngInclude method.

Nó có nghĩa là yêu cầu dữ liệu liên quan được trả về cùng với kết quả truy vấn từ cơ sở dữ liệu. Chỉ có một kết nối được thực hiện với nguồn dữ liệu, một lượng lớn dữ liệu hơn được trả về trong truy vấn ban đầu.

Ví dụ: khi truy vấn sinh viên, hãy tải các đăng ký của họ. Sinh viên và đăng ký của họ sẽ được truy xuất trong một truy vấn duy nhất.

Hãy xem ví dụ sau đây, trong đó tất cả các sinh viên có đăng ký học tương ứng của họ được truy xuất từ ​​cơ sở dữ liệu bằng cách sử dụng tải nhanh.

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();
      }
   }
}

Khi đoạn mã trên được biên dịch và thực thi, bạn sẽ nhận được kết quả sau.

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

Dưới đây là một số dạng truy vấn tải mong muốn khác có thể được sử dụng.

// 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();

Nhiều cấp độ

Nó cũng có thể tải nhiều cấp độ của các thực thể liên quan. Các truy vấn sau đây hiển thị các ví dụ về Sinh viên, Ghi danh và Khóa học.

// 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();

Chúng tôi khuyên bạn nên thực hiện ví dụ trên theo cách từng bước để hiểu rõ hơn.