次の方法で共有


Key 要素 (CSDL)

Key 要素は、EntityType 要素の子要素であり、エンティティ キー (アイデンティティを決定するエンティティ型のプロパティまたはプロパティ セット) を定義します。エンティティ キーを構成するプロパティは、デザイン時に選択されます。エンティティ キー プロパティの値は、実行時のエンティティ セット内のエンティティ型のインスタンスを一意に識別する必要があります。エンティティ キーを構成するプロパティには、エンティティ セット内のインスタンスの一意性を保証するものを選択する必要があります。Key 要素は、エンティティ型の 1 つ以上のプロパティを参照することで、エンティティ キーを定義します。

Key 要素には、次の子要素を含めることができます。

適用可能な属性

Key 要素には、任意数の annotation 属性 (カスタム XML 属性) を適用できます。ただし、カスタム属性は 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) は書籍を一意に識別するものであるため、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 ツール