Entity Framework-빠른로드
즉시로드는 한 유형의 항목에 대한 쿼리가 관련 항목도 쿼리의 일부로로드하는 프로세스입니다. Eager loading은Include method.
요청한 관련 데이터가 데이터베이스의 쿼리 결과와 함께 반환됨을 의미합니다. 데이터 소스에 대한 연결이 하나 뿐이며 초기 쿼리에서 더 많은 양의 데이터가 반환됩니다.
예를 들어 학생을 쿼리 할 때 등록을 열심히로드합니다. 학생과 등록은 단일 쿼리로 검색됩니다.
eager loading을 사용하여 각각의 등록을 가진 모든 학생이 데이터베이스에서 검색되는 다음 예제를 살펴 보겠습니다.
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
다음은 사용할 수있는 다른 형태의 eager loading 쿼리입니다.
// 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();
더 나은 이해를 위해 위의 예를 단계별로 실행하는 것이 좋습니다.