다음을 통해 공유


개체 사용자 지정(Entity Framework)

ADO.NET 엔터티 프레임워크에서는 EDM(엔터티 데이터 모델)의 CSDL(개념 스키마 정의 언어) 파일을 기반으로 개체 계층을 자동 생성하는 도구를 제공합니다. 이 데이터 클래스는 사용하는 응용 프로그램의 요구 사항에 따라 다양한 수준으로 사용자 지정할 수 있습니다. 또한 사용자 지정 데이터 클래스를 EDM에 사용하도록 수정할 수도 있습니다. 이런 기능은 엔터티 프레임워크를 사용할 수 있도록 기존 응용 프로그램의 데이터 클래스를 업그레이드하는 경우나 데이터 클래스 생성 방법을 더 강하게 제어하려는 경우에 유용합니다.

Partial 데이터 클래스 확장

EDM에 정의된 형식에는 개체 지향 프로그래밍에 사용되는 클래스와 같은 연결된 메서드가 없습니다. 그 대신 EDM에 정의된 속성만 포함합니다. 생성된 partial 데이터 클래스를 확장하여 개체에 기능을 추가할 수 있습니다. 엔터티 데이터 모델 도구를 통해 생성된 데이터 클래스는 partial 클래스에서 구현됩니다. partial 클래스는 클래스 정의가 두 개 이상의 소스 파일에 나눠져 있습니다. 각 소스 파일에는 클래스 정의 섹션이 있으며 모든 섹션은 응용 프로그램이 컴파일될 때 결합됩니다. 자세한 내용은 Partial(Visual Basic) 또는 부분(형식)(C# 참조)을 참조하십시오.

partial 클래스를 사용하면 별도의 소스 파일에서 사용자 지정 메서드 및 속성으로 이 클래스를 확장할 수 있으며, 생성된 파일이 새로 고쳐질 때 사용자 지정 내용을 잃을 염려가 없습니다. 자세한 내용은 방법: 생성된 데이터 개체 사용자 지정(Entity Framework)을 참조하십시오.

사용자 지정 비즈니스 논리

생성된 데이터 클래스를 사용할 때는 속성이나 관계의 변경처럼 특정 개체 서비스 작업 중에 사용자 지정 비즈니스 논리를 호출할 수 있습니다. 이 비즈니스 논리에는 속성을 변경하거나 SaveChanges를 호출할 때 추가 유효성 검사나 로깅을 만드는 것이 포함될 수 있습니다. 개체 서비스에서 발생한 이벤트를 처리하거나 속성 변경 시 호출된 사용자 지정 부분 메서드(Partial Method)를 정의하는 방법으로 사용자 지정 비즈니스 논리를 호출할 수 있습니다.

다음은 사용자 지정 비즈니스 논리 호출에 사용하는 이벤트와 메서드입니다.

  • OnPropertyChangingOnPropertyChanged 부분 메서드(Partial Method)
    속성이 변경될 때 개체 서비스에서 호출하는, 생성된 데이터 클래스에 대한 부분 메서드(Partial Method) 쌍입니다. 속성 변경 시 실행되는 코드를 구현하기 위해 partial 데이터 클래스에서 이 메서드를 확장합니다. 자세한 내용은 방법: 속성 변경 중 비즈니스 논리 실행(Entity Framework)을 참조하십시오.
  • OnContextCreated 메서드
    엔터티 데이터 모델 도구는 모델의 EntityContainer를 나타내며 ObjectContext 클래스에서 상속되는 OnContextCreated 부분 메서드(Partial Method)를 클래스에 생성합니다. 이 부분 메서드(Partial Method)는 ObjectContext가 인스턴스화될 때마다 호출됩니다. 이 부분 메서드(Partial Method)를 코드에 구현하여 SavingChanges 이벤트에 대한 처리기를 등록합니다. 자세한 내용은 방법: 변경된 내용을 저장할 때 비즈니스 논리 실행(Entity Framework)을 참조하십시오.

사용자 지정 데이터 클래스

메서드와 속성을 추가하여 partial 클래스를 확장하는 방법만으로는 충분한 유연성을 제공하지 못하는 경우가 있습니다. 예를 들어, 데이터베이스에서 응용 프로그램이 사용할 CLR 개체로 데이터를 로드하는 데 ADO.NET을 사용하는 .NET Framework 응용 프로그램이 있습니다. 이 개체에는 개체 계층에 보존해야 할 중요한 사용자 지정 및 비즈니스 논리가 포함되어 있을 수 있습니다. 이 사용자 지정에서 엔터티 프레임워크를 사용하도록 응용 프로그램을 마이그레이션하지 못하게 할 수도 있습니다. 또한 생성된 partial 클래스를 단순히 확장하는 것 이상으로 엔터티 형식을 더 강력하게 제어해야 할 수도 있습니다.

EDM에서 사용자 지정 데이터 클래스를 사용할 때는 EntityObject에서 상속하는 것이 좋습니다. EntityObject에서 상속할 수 없는 경우 또는 프레임워크로부터 더 강력한 독립성을 원할 경우 Entity Framework에서는 EDM에 사용자 지정 데이터 클래스를 사용하기 위해 구현할 수 있는 인터페이스 집합을 제공합니다. 자세한 내용은 사용자 지정 데이터 클래스 인터페이스 구현(Entity Framework)을 참조하십시오. 사용자 지정 데이터 클래스를 사용할 경우, 사용자 지정 데이터 클래스 및 속성에 특성을 적용하고 속성 변경 시 이를 개체 컨텍스트에 알려야 합니다.

EntityObject에서 상속

생성된 데이터 클래스는 EntityObject 또는 ComplexObject에서 상속합니다. EDM에 사용자 지정 데이터 클래스를 사용해야 하는 경우, 이 두 기본 클래스 중 하나에서 상속하도록 데이터 클래스를 수정하는 것이 좋습니다. 이렇게 하면 사용자 지정 데이터 클래스는 EntityObject에서 제공하는 변경 추적 및 관계 관리 기능의 이점을 얻을 수 있습니다.

EntityObjectComplexObject에서 상속할 경우 다음 사항에 유의하십시오.

다음 예제에서는 EntityObject에서 상속하는 사용자 지정 데이터 클래스 Order를 정의합니다.

<EdmEntityTypeAttribute(NamespaceName:="Microsoft.Samples.Edm", Name:="Order")> _
Public Class Order
    Inherits EntityObject
[EdmEntityTypeAttribute(NamespaceName="Microsoft.Samples.Edm",Name="Order")]
public class Order : EntityObject 

자세한 내용은 방법: EntityObject 및 ComplexObject 기본 클래스에서 상속(Entity Framework)을 참조하십시오.

단원 내용

참고 항목

기타 리소스

개체 서비스(Entity Framework)
사용자 지정 개체 사용(Entity Framework 작업)