Key 要素 (CSDL)

Key 要素は、EntityType 要素の子要素であり、エンティティ キー (アイデンティティを決定するエンティティ型のプロパティまたはプロパティ セット) を定義します。 エンティティ キーを構成するプロパティは、デザイン時に選択されます。 The values of entity key properties must uniquely identify an entity type instance within an entity set at run time. The properties that make up an entity key should be chosen to guarantee uniqueness of instances in an entity set. Key 要素は、エンティティ型の 1 つ以上のプロパティを参照することで、エンティティ キーを定義します。

The Key element can have the following child elements:

適用可能な属性

Key 要素には、任意数の annotation 属性 (カスタム XML 属性) を適用できます。 However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。

下の例は、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) は書籍を一意に識別するものであるため、ISBN プロパティは、エンティティ キーに適しています。

次の例は、Name および Address という 2 つのプロパティで構成されるエンティティ キーを持つエンティティ型 (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>

同じ名前の 2 人の著者が同じ住所に住む可能性は低いため、エンティティ キーに Name および Address を使用するのは妥当な選択になります。 ただし、エンティティ キーのこの選択では、エンティティ セット内のエンティティ キーの一意性を絶対的に保証することはできません。 この場合には、AuthorId などのプロパティを追加して、著者を一意に識別することが推奨されます。

参照

概念

エンティティ フレームワークの概要
CSDL 仕様
Schema 要素 (CSDL)

その他のリソース

CSDL、SSDL、および MSL 仕様
ADO.NET Entity Data Model Tools
entity key (Entity Data Model)