다음을 통해 공유


Key 요소(CSDL)

Key 요소는 EntityType 요소의 자식 요소이며 엔터티 키(ID를 확인하는 엔터티 형식의 속성 또는 속성 집합)를 정의합니다. 엔터티 키를 구성하는 속성은 디자인 타임에 선택됩니다. 엔터티 키 속성의 값은 런타임에 엔터티 집합 내에서 엔터티 형식 인스턴스를 고유하게 식별해야 합니다. 엔터티 키를 구성하는 속성을 선택하여 엔터티 집합에서 인스턴스의 고유성을 보장해야 합니다. Key 요소는 엔터티 형식의 속성을 하나 이상 참조하여 엔터티 키를 정의합니다.

Key 요소에는 다음 자식 요소가 있을 수 있습니다.

적용 가능한 특성

주석 특성(사용자 지정 XML 특성)을 원하는 수만큼 Key 요소에 적용할 수 있습니다. 그러나 사용자 지정 특성은 CSDL에 예약된 XML 네임스페이스에 속할 수 없습니다. 두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다.

예제

다음 예제에서는 이름이 Book인 엔터티 형식을 정의합니다. 엔터티 키는 엔터티 형식의 ISBN 속성을 참조하여 정의됩니다.

<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>

ISBN(International Standard Book Number)은 책을 고유하게 식별하므로 엔터티 키에 대해 ISBN 속성을 사용하는 것이 좋습니다.

다음 예제에서는 두 속성인 NameAddress로 구성된 엔터티 키가 있는 엔터티 형식(Author)을 보여 줍니다.

<EntityType Name="Author">
  <Key>
    <PropertyRef Name="Name" />
    <PropertyRef Name="Address" />
  </Key>
  <Property Type="String" Name="Name" Nullable="false" />
  <Property Type="String" Name="Address" Nullable="false" />
  <NavigationProperty Name="Books" Relationship="BooksModel.WrittenBy"
                      FromRole="Author" ToRole="Book" />
</EntityType>

이름이 같은 두 저자가 같은 주소지에서 거주할 가능성은 없으므로 엔터티 키에 대해 NameAddress를 사용하는 것이 좋습니다. 그러나 이러한 엔터티 키 선택이 엔터티 집합에서의 고유한 엔터티 키를 절대적으로 보장하지는 않습니다. 이 경우에는 저자를 고유하게 식별하는 데 사용할 수 있는 AuthorId와 같은 속성을 추가하는 것이 좋습니다.

참고 항목

개념

Entity Framework 개요
CSDL 사양
Schema 요소(CSDL)

기타 리소스

CSDL, SSDL 및 MSL 사양
ADO.NET Entity Data Model Tools
entity key (Entity Data Model)