엔터티 데이터 사용

엔터티 프레임워크에서는 일련의 개념 스키마와 저장소 스키마 및 이 두 스키마 사이의 매핑을 클라이언트 뷰라는 양방향 쌍으로 된 Entity SQL 문에 컴파일합니다. 이 뷰는 쿼리를 구동하고 런타임 엔진 내의 처리를 업데이트합니다. 뷰를 생성하는 매핑 컴파일러는 디자인 타임에 호출할 수도 있고 첫 번째 쿼리가 EDM(엔터티 데이터 모델) 스키마에 대해 실행되는 런타임에 호출할 수도 있습니다.

엔터티 프레임워크는 기본 데이터 공급자 및 관계형 데이터베이스에 EntityConnection을 제공하는 방법으로 저장소별 ADO.NET 데이터 공급자를 기반으로 빌드됩니다.

쿼리를 실행하면 쿼리에 대한 구문 분석이 수행되고 정식 명령 트리로 변환됩니다. 명령 트리는 쿼리의 개체 모델 표현입니다. 정식 명령 트리는 select, update, insert, delete 명령을 나타냅니다. 이후 모든 처리는 System.Data.EntityClient 공급자와 기본 .NET Framework 데이터 공급자(예: System.Data.SqlClient) 간의 통신 수단인 정식 명령 트리에서 수행됩니다.

다음 다이어그램은 데이터 액세스를 위한 Entity Framework 아키텍처를 보여 줍니다.

Entity Framework 아키텍처 다이어그램

개체 쿼리

엔터티 프레임워크 도구는 개념적 모델에 정의된 엔터티 컨테이너를 나타내며 ObjectContext에서 파생된 클래스를 생성합니다. ObjectContext 클래스는 엔터티를 개체 형태로 반환하는 EDM에 대한 쿼리뿐만 아니라 엔터티 개체 생성, 업데이트, 삭제 등의 작업도 지원합니다. 엔터티 프레임워크에서는 EDM에 대한 개체 쿼리를 지원합니다. 쿼리는 Entity SQL, LINQ(Language-Integrated Query), 개체 쿼리 작성기 메서드를 사용하여 작성할 수 있습니다.

개념적 모델에서 엔터티는 연결을 통해 서로 연관됩니다. 개체 계층에서 이러한 연결은 엔터티 참조를 기반으로 하여 관련 개체 컬렉션을 공개하는 속성으로 표현됩니다. 예를 들어, School 모델에서 Department.CourseCourseDepartment 사이의 연결을 기반으로 하여 Course 개체의 엔터티 컬렉션을 가져옵니다. 참조된 개체는 자동으로 로드되지 않으므로, 엔터티 참조에 대해 Load 메서드를 호출하여 관련 개체 데이터를 개체 컨텍스트에 로드해야 합니다. 참조된 개체와 함께 로드할 관련 개체를 정의하는 쿼리 경로도 지정해야 합니다. 자세한 내용은 데이터를 개체로 쿼리(Entity Framework)를 참조하십시오.

퀵 스타트에서 확인할 수 있는 다음 예제는 실행 시 모든 Department 개체를 검색하는 쿼리를 보여 줍니다. 쿼리 경로 정의는 Department 개체와 관련된 Course 개체도 반환하며, Entity SQL WHERE 절은 반환된 개체를 Name별로 정렬합니다.

' Define a query that returns all Department objects and related
' Course objects, ordered by name.
Dim departmentQuery As ObjectQuery(Of Department) = _
    schoolContext.Department.Include("Course").OrderBy("it.Name")
// Define a query that returns all Department objects and related
// Course objects, ordered by name.
ObjectQuery<Department> departmentQuery =
    schoolContext.Department.Include("Course").OrderBy("it.Name");

자세한 내용은 데이터를 개체로 쿼리(Entity Framework)를 참조하십시오.

저장 프로시저를 사용하여 데이터 소스에서 쿼리를 실행하는 EDM을 정의할 수 있습니다. 이런 저장 프로시저의 결과 집합은 개념적 모델의 엔터티에 매핑됩니다. 자세한 내용은 저장 프로시저 지원(Entity Framework)를 참조하십시오.

개체 사용

개체 컨텍스트의 개체는 데이터 소스에서 데이터를 나타내는 엔터티 형식입니다. 개체 컨텍스트에서 개체를 수정하거나 만들거나 삭제할 수 있습니다. 개체 컨텍스트는 ID 및 개체 간의 관계를 관리합니다. 개체를 serialize하고 개체를 컨트롤에 바인딩할 수도 있습니다. 자세한 내용은 개체 사용(Entity Framework)을 참조하십시오.

퀵 스타트에서 확인할 수 있는 다음 예제는 Department 개체와 관련된 Course 개체의 컬렉션을 가져와 이를 DataGridView 컨트롤에 바인딩합니다.

' Get the object for the selected department.
Dim department As Department = _
    CType(Me.departmentList.SelectedItem, Department)

' Bind the grid view to the collection of Course objects 
' that are related to the selected Department object.
courseGridView.DataSource = department.Course
// Get the object for the selected department.
Department department = 
    (Department)this.departmentList.SelectedItem;

// Bind the grid view to the collection of Course objects 
// that are related to the selected Department object.
courseGridView.DataSource = department.Course;

Entity Framework는 엔터티 데이터 변경을 추적하며, 사용자는 이를 통해 변경 내용을 다시 데이터 소스에 보관할 수 있습니다. 퀵 스타트에서 확인할 수 있는 다음 예제에서는 개체 컨텍스트의 변경 내용이 데이터베이스에 기록됩니다.

' Save object changes to the database, display a message, 
' and refresh the form.
numChanges = schoolContext.SaveChanges()
// Save object changes to the database, display a message,
// and refresh the form.
numChanges = schoolContext.SaveChanges();

자세한 내용은 개체 추가, 수정 및 삭제(Entity Framework)를 참조하십시오.

저장 프로시저를 사용하여 데이터 소스에서 데이터를 삽입, 업데이트, 삭제하는 EDM을 정의할 수 있습니다. 이런 저장 프로시저는 개념적 모델의 엔터티에 매핑됩니다. 자세한 내용은 저장 프로시저 지원(Entity Framework)를 참조하십시오.

참고 항목

개념

LINQ to Entities 예제
엔터티 데이터 모델 형식
엔터티 데이터 모델 관계

기타 리소스

개체 서비스(Entity Framework)
응용 프로그램 시나리오(Entity Framework)