개체 서비스 개요(Entity Framework)
개체 서비스는 엔터티 프레임워크의 구성 요소로서, 이를 통해 엔터티 형식의 인스턴스인 강력한 형식의 CLR 개체로 표현된 데이터를 쿼리, 삽입, 업데이트하고 삭제할 수 있습니다. 개체 서비스는 EDM(엔터티 데이터 모델)에 정의된 형식에 대해 LINQ(Language-Integrated Query) 및 Entity SQL 쿼리를 모두 지원합니다. 개체 서비스는 반환된 데이터를 개체로 구체화하고 개체 변경 내용을 데이터 소스에 전달합니다. 또한 변경 내용을 추적하고 개체를 컨트롤에 바인딩하며 동시성을 처리하는 기능도 제공합니다. 개체 서비스는 System.Data.Objects 및 System.Data.Objects.DataClasses 네임스페이스의 클래스에서 구현합니다.
개체 컨텍스트
ObjectContext 클래스는 EDM에 정의된 엔터티 형식의 인스턴스인 개체 형식으로 된 데이터와 상호 작용하기 위한 기본 클래스입니다. ObjectContext 클래스의 인스턴스는 다음을 캡슐화합니다.
EntityConnection 개체 형태의 데이터베이스 연결
모델을 설명하는 MetadataWorkspace 개체 형태의 메타데이터
생성, 업데이트 및 삭제 작업 동안 개체를 추적하는 ObjectStateManager 개체
엔터티 프레임워크 도구는 CSDL(개념 스키마 정의 언어) 파일을 사용하여 개체 계층 코드를 생성합니다. 이 코드는 개체 형태의 엔터티 데이터로 작업할 때 및 개체 서비스 기능을 이용할 때 사용합니다. 생성된 이 코드에는 다음 데이터 클래스가 포함됩니다.
형식화된 ObjectContext 클래스. 이 클래스는 모델의 EntityContainer를 나타내며 ObjectContext에서 파생됩니다.
엔터티 형식을 나타내고 EntityObject에서 상속하는 클래스
복합 형식을 나타내고 ComplexObject에서 상속하는 클래스
참고 |
---|
ObjectContext 클래스는 스레드로부터 안전하지 않습니다. ObjectContext의 데이터 개체는 다중 스레드 시나리오에서 그 무결성을 보장할 수 없습니다. |
개체 서비스 사용
개체 서비스는 엔터티 프레임워크에 대한 프로그래밍에서 다음 동작을 지원합니다.
데이터를 개체로 쿼리
개체 서비스를 사용하면 LINQ, Entity SQL 또는 쿼리 작성기 메서드를 사용하여 엔터티 데이터 모델에 대해 쿼리를 실행하고 데이터를 개체 형태로 반환할 수 있습니다. 자세한 내용은 개체 쿼리(Entity Framework)를 참조하십시오.
쿼리 결과 셰이핑
기본적으로 개체 서비스에서는 쿼리에서 구체적으로 요청한 개체만 반환합니다. 개체 간의 관계가 존재하는 경우, 쿼리 결과로 관련 개체를 반환할지 여부를 지정할 수 있습니다. 또한 후속 요청에서 관련 개체를 로드할 수도 있습니다. 자세한 내용은 쿼리 결과 셰이핑(Entity Framework)을 참조하십시오.
작성기 메서드를 사용한 쿼리 작성
개체 서비스에서는 Entity SQL 및 LINQ to Entities 쿼리에 해당하는 쿼리를 생성하는 데 사용되는 ObjectQuery에 대한 메서드를 제공합니다. 자세한 내용은 쿼리 작성기 메서드(Entity Framework)를 참조하십시오.
개체 추가, 변경 및 삭제
개체 서비스는 메모리에 데이터 개체를 보관하며, 개체 서비스를 통해 개체 컨텍스트 내부에서 개체를 추가, 수정, 삭제할 수 있습니다. 개체에 대한 변경 내용은 개체 컨텍스트에서 추적됩니다. 자세한 내용은 개체 추가, 수정 및 삭제(Entity Framework)를 참조하십시오.
데이터 소스에 변경 내용 저장
개체 서비스에서는 개체 컨텍스트의 개체 변경 내용을 캐시합니다. 명시적인 요청이 있는 경우 개체 서비스는 변경 내용을 다시 데이터 소스에 저장합니다. 자세한 내용은 변경 내용 저장 및 동시성 관리(Entity Framework)를 참조하십시오.
컨트롤에 개체 바인딩
개체 서비스를 사용하면 DataGridView 컨트롤과 같이 데이터 바인딩을 지원하는 컨트롤에 개체를 바인딩할 수 있습니다. 자세한 내용은 컨트롤에 개체 바인딩(Entity Framework)을 참조하십시오.
개체 연결
개체 서비스에서는 기존 개체를 직접 개체 컨텍스트에 연결할 수 있습니다. 따라서 ASP.NET 응용 프로그램의 보기 상태에서 저장되었거나 원격 메서드 호출 또는 웹 서비스에서 반환된 개체를 연결할 수 있습니다. 자세한 내용은 개체 연결(Entity Framework)을 참조하십시오.
개체 분리
개체가 Windows Form 컨트롤에 바인딩되는 경우와 같이 개체 컨텍스트 인스턴스를 응용 프로그램 실행 시간 동안 유지해야 하는 경우가 있습니다. 개체 서비스를 사용하면 필요 없어진 리소스를 해제하기 위해 개체를 분리하는 방법을 통해 개체 컨텍스트의 크기를 관리할 수 있습니다. 자세한 내용은 개체 분리(Entity Framework)를 참조하십시오.
개체 serialize
개체 서비스에서는 개체에 대한 WCF(Windows Communication Foundation) 데이터 계약 serialization, 이진 serialization, XML serialization 등이 지원됩니다. 데이터 계약 serialization은 웹 서비스에서 유용하며, 이진 serialization은 특히 보기 상태를 사용하여 ASP.NET 응용 프로그램에서 개체를 보관할 때 유용합니다. 자세한 내용은 개체 Serialize(Entity Framework)를 참조하십시오.
개체 ID 관리 및 변경 내용 추적
개체 서비스에서는 개체 변경 내용을 추적하고 충돌을 처리하며 데이터 소스로부터 데이터를 검색하는 시점을 결정할 때 ID 값을 사용합니다. 자세한 내용은 개체 컨텍스트 관리(Entity Framework)를 참조하십시오.
동시성 관리
개체 서비스에서는 하나 이상의 속성에서 ConcurrencyMode 특성이 "고정"으로 설정된 경우 동시성을 추적할 수 있습니다. 이런 경우 개체 서비스는 동시성 위반을 발견하면 특정 예외를 발생시킵니다. 자세한 내용은 변경 내용 저장 및 동시성 관리(Entity Framework)를 참조하십시오.
연결 관리
개체 서비스를 사용하면 개체 컨텍스트에서 사용하는 연결을 명시적으로 관리할 수 있으며 개체 컨텍스트에 대해 고유한 연결을 사용할 수 있습니다. 자세한 내용은 개체 서비스에서 연결 관리(Entity Framework)를 참조하십시오.
트랜잭션 관리
개체 서비스는 데이터 소스에 대한 작업을 조정하고 분산 트랜잭션에 참여할 수 있도록 .NET Framework 트랜잭션을 지원합니다. 자세한 내용은 개체 서비스에서 트랜잭션 관리(Entity Framework)를 참조하십시오.
엔터티 데이터 모델에서 사용자 지정 개체 사용
개체 서비스를 사용하면 고유 개체를 직접 수동으로 정의하거나 기존 개체를 엔터티 데이터 모델과 함께 사용할 수 있습니다. 자세한 내용은 개체 사용자 지정(Entity Framework)을 참조하십시오.