EDM(엔터티 데이터 모델)은 엔터티 형식에 대한 상속을 지원합니다. EDM의 상속은 개체 지향 프로그래밍 언어의 클래스에 대한 상속과 유사합니다. 개체 지향 언어의 클래스와 마찬가지로 개념적 모델에서 다른 엔터티 형식(기본 형식)에서 상속되는 엔터티 형식( 파생형식)을 정의할 수 있습니다. 그러나 개체 지향 프로그래밍의 클래스와 달리 개념적 모델에서 파생 형식은 항상 기본 형식의 모든 속성 과 탐색 속성을 상속합니다. 파생 형식의 상속된 속성은 재정의할 수 없습니다.
개념적 모델에서는 파생된 형식이 다른 파생 형식에서 상속되는 상속 계층 구조를 빌드할 수 있습니다. 계층 구조의 맨 위에 있는 형식(파생 형식이 아닌 계층의 한 형식)을 루트 형식이라고 합니다. 상속 계층 구조에서 엔터티 키 는 루트 형식에 정의되어야 합니다.
파생 형식이 둘 이상의 형식에서 상속되는 상속 계층 구조는 빌드할 수 없습니다. 예를 들어, Book
엔터티 형식을 갖춘 개념적 모델에서는 FictionBook
에서 각각 상속받는 파생 형식 NonFictionBook
과 Book
를 정의할 수 있습니다. 그러나 FictionBook
형식과 NonFictionBook
형식 둘 다에서 상속되는 형식을 정의할 수는 없습니다.
예시
다음 다이어그램은 네 가지 Book
엔터티 형식인 , FictionBook
, Publisher
및 Author
4개의 개념적 모델을 보여줍니다.
FictionBook
엔터티 형식은 Book
엔터티 형식을 상속받은 파생 형식입니다. 형식은 FictionBook
, ISBN (Key)
, Title
, 그리고 Revision
속성을 상속하며, Genre
이라는 추가 속성을 정의합니다.
ADO.NET Entity Framework는 CSDL(개념 스키마 정의 언어)이라는 DSL(도메인별 언어)을 사용하여 개념 모델을 정의합니다. 다음 CSDL은 위의 다이어그램에 나타난 것처럼 FictionBook
형식에서 상속되는 엔터티 형식 Book
를 정의합니다.
<EntityType Name="FictionBook" BaseType="BooksModel.Book" >
<Property Type="String" Name="Genre" Nullable="false" />
</EntityType>