엔터티 데이터 모델: 상속

EDM(엔터티 데이터 모델)에서는 엔터티 형식에 대해 상속을 지원합니다. EDM의 상속은 개체 지향 프로그래밍 언어의 클래스에 대한 상속과 유사합니다. 개체 지향 언어의 클래스와 마찬가지로 개념적 모델에서 다른 엔터티 형식(기본 형식)으로부터 상속되는 엔터티 형식(파생 형식)을 정의할 수 있습니다. 그러나 개체 지향 프로그래밍의 클래스와 달리 개념적 모델에서 파생 형식은 항상 기본 형식의 속성탐색 속성을 모두 상속합니다. 파생 형식에서 상속된 속성을 재정의할 수는 없습니다.

개념적 모델에서는 파생 형식이 다른 파생 형식으로부터 상속받는 상속 계층 구조를 작성할 수 있습니다. 계층 구조의 맨 위에 있는 형식(파생 형식이 아닌 계층 구조의 한 형식)을 루트 형식이라고 합니다. 상속 계층 구조의 루트 형식에 엔터티 키를 정의해야 합니다.

파생 형식이 둘 이상의 형식으로부터 상속받는 상속 계층 구조는 작성할 수 없습니다. 예를 들어, Book 엔터티 형식이 포함된 개념적 모델에서는 각각 FictionBook으로부터 상속되는 파생 형식 NonFictionBookBook을 정의할 수 있습니다. 그러나 FictionBookNonFictionBook 형식에서 모두 상속되는 형식을 정의할 수는 없습니다.

예시

다음 다이어그램은 Book, FictionBook, PublisherAuthor의 네 가지 엔터티 형식이 있는 개념적 모델을 보여 줍니다. FictionBook 엔터티 형식은 Book 엔터티 형식에서 상속되는 파생 형식입니다. FictionBook 형식은 ISBN (Key), TitleRevision 속성을 상속하고 Genre라는 추가 속성을 정의합니다.

Diagram that shows a conceptual model with four entity types.

ADO.NET Entity FrameworkCSDL(개념 스키마 정의 언어)이라는 DSL(Domain-Specific Language)을 사용하여 개념적 모델을 정의합니다. 다음 CSDL에서는 위의 다이어그램에 표시된 FictionBook 형식에서 상속되는 엔터티 형식 Book을 정의합니다.

<EntityType Name="FictionBook" BaseType="BooksModel.Book" >
  <Property Type="String" Name="Genre" Nullable="false" />
</EntityType>

참고 항목