次の方法で共有


ナビゲーション プロパティ (Entity Data Model)

ナビゲーション プロパティは、アソシエーションの 1 つの End から別の End へのナビゲーションを可能にする、エンティティ型の省略可能なプロパティです。 その他のプロパティとは異なり、ナビゲーション プロパティはデータを伝達しません。

ナビゲーション プロパティの定義には、以下が含まれます。

  • 名前。 (必須)

  • 移動対象のアソシエーション。 (必須)

  • 移動対象のアソシエーションの End。 (必須)

ナビゲーション プロパティは、両方のアソシエーション End のエンティティ型で省略可能です。 1 つのアソシエーション End のエンティティ型にナビゲーション プロパティを定義した場合に、そのアソシエーションの他方の End でもエンティティ型にナビゲーション プロパティを定義する必要はありません。

ナビゲーション プロパティのデータ型は、リモートのアソシエーション End多重度により決まります。 たとえば、ナビゲーション プロパティ、OrdersNavPropCustomer エンティティ型に存在し、CustomerOrder の間で一対多のアソシエーションとして移動するとします。 ナビゲーション プロパティのリモートのアソシエーション End の多重度が多数 (*) であるため、そのデータ型は (Order の) コレクションになります。 同様に、Order エンティティ型にナビゲーション プロパティ、CustomerNavProp が存在する場合、リモート End の多重度が (1) であるため、データ型は Customer になります。

下のダイアグラムは、BookPublisher、および Author という 3 つのエンティティ型の概念モデルを示しています。 Book エンティティ型には、ナビゲーション プロパティ、Publisher および Authors が定義されています。 Publisher エンティティ型と Author エンティティ型には、ナビゲーション プロパティ、Books が定義されています。

ナビゲーション プロパティのモデル

ADO.NET Entity Framework では、概念スキーマ定義言語 (CSDL) と呼ばれるドメイン固有言語 (DSL) を使用して概念モデルを定義します。 次の 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 が含まれています。

参照

概念

Entity Data Model キーの概念
Entity Data Model