탐색 속성(엔터티 데이터 모델)
탐색 속성은 연결의 한 End에서 다른 End로의 탐색을 허용하는 엔터티 형식의 선택적 속성입니다. 다른 속성과 달리 탐색 속성은 데이터를 전달하지 않습니다.
탐색 속성 정의에는 다음 정보가 들어 있습니다.
이름 (필수적 요소)
탐색하는 연결 (필수적 요소)
탐색하는 연결의 End (필수적 요소)
탐색 속성은 연결의 양쪽 End에 있는 엔터티 형식 모두에 대해 선택적 요소입니다. 연결의 End에 있는 한 엔터티 형식에 대해 탐색 속성을 정의하는 경우 연결의 다른 End에 있는 엔터티 형식에 대해서는 탐색 속성을 정의할 필요가 없습니다.
탐색 속성의 데이터 형식은 해당 원격 연결 End의 복합성에 의해 결정됩니다. 예를 들어, OrdersNavProp 탐색 속성이 Customer 엔터티 형식에 존재하며 Customer와 Order 간의 일대다 연결을 탐색한다고 가정합니다. 탐색 속성에 대한 원격 연결 End의 복합성이 다수(*)이므로 해당 데이터 형식은 Order의 컬렉션입니다. 마찬가지로 CustomerNavProp 탐색 속성이 Order 엔터티 형식에 존재하는 경우 원격 End의 복합성이 한 개(1)이므로 해당 데이터 형식은 Customer가 됩니다.
예제
다음 다이어그램에서는 세 가지 엔터티 형식 Book, Publisher 및 Author가 포함된 개념적 모델을 보여 줍니다. 탐색 속성 Publisher 및 Authors는 Book 엔터티 형식에 정의됩니다. 탐색 속성 Books는 Publisher 엔터티 형식과 Author 엔터티 형식에 모두 정의됩니다.
ADO.NET Entity Framework는 CSDL(개념 스키마 정의 언어)이라는 DSL(Domain-Specific Language)을 사용하여 개념적 모델을 정의합니다. 다음 CSDL에서는 위의 다이어그램에 표시된 Book 엔터티 형식을 정의합니다.
<EntityType Name="Book">
<Key>
<PropertyRef Name="ISBN" />
</Key>
<Property Type="String" Name="ISBN" Nullable="false" />
<Property Type="String" Name="Title" Nullable="false" />
<Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
<NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
FromRole="Book" ToRole="Publisher" />
<NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
FromRole="Book" ToRole="Author" />
</EntityType>
XML 특성을 사용하여 탐색 속성을 정의하는 데 필요한 정보를 전달합니다. Name 특성에는 속성 이름이 포함되고, Relationship 특성에는 탐색하는 연결 이름이 포함되고, FromRole 및 ToRole 특성에는 연결 End가 포함됩니다.