복합 형식은 엔터티 형식 또는 다른 복합 형식에서 풍부하고 구조화된 속성을 정의하기 위한 템플릿입니다. 각 템플릿에는 다음이 포함됩니다.
고유한 이름 (필수)
비고
복합 형식의 이름은 동일한 네임스페이스 내의 엔터티 형식 이름과 같을 수 없습니다.
하나 이상의 속성 형식의 데이터 입니다. (선택 사항)
비고
복합 형식의 속성은 다른 복합 형식일 수 있습니다.
복합 형식은 복합 형식이 기본 형식 속성 또는 기타 복합 형식의 형태로 데이터 페이로드를 전달할 수 있다는 엔터티 형식과 유사합니다. 그러나 복합 형식과 엔터티 형식 간에는 몇 가지 주요 차이점이 있습니다.
복합 형식에는 ID가 없으므로 독립적으로 존재할 수 없습니다. 복합 형식은 엔터티 형식 또는 기타 복합 형식의 속성으로만 존재할 수 있습니다.
복합 형식은 연결에 참여할 수 없습니다. 연결의 끝은 둘 다 복합 형식일 수 없으므로 복합 형식에서 탐색 속성을 정의할 수 없습니다.
예시
ADO.NET Entity Framework는 CSDL(개념 스키마 정의 언어)이라는 DSL(도메인별 언어)을 사용하여 개념 모델을 정의합니다. CSDL은 복합 형식인 Address를 기본 형식 속성 StreetAddress, City, StateOrProvince, Country, PostalCode로 정의합니다.
<ComplexType Name="Address" >
<Property Type="String" Name="StreetAddress" Nullable="false" />
<Property Type="String" Name="City" Nullable="false" />
<Property Type="String" Name="StateOrProvince" Nullable="false" />
<Property Type="String" Name="Country" Nullable="false" />
<Property Type="String" Name="PostalCode" Nullable="false" />
</ComplexType>
복합 형식 Address (위)을 엔터티 형식의 속성으로 정의하려면 엔터티 형식 정의에서 속성 형식을 선언해야 합니다. 다음 CSDL은 엔터티 형식(Publisher)에서 Address 속성을 복합 형식으로 선언합니다.
<EntityType Name="Publisher">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Type="Int32" Name="Id" Nullable="false" />
<Property Type="String" Name="Name" Nullable="false" />
<Property Type="BooksModel.Address" Name="Address" Nullable="false" />
<NavigationProperty Name="Books" Relationship="BooksModel.PublishedBy"
FromRole="Publisher" ToRole="Book" />
</EntityType>