次の方法で共有


NavigationProperty 要素 (EntityType CSDL)

エンティティ データ モデル (EDM) では、Association 型によって関連付けられたエンティティとの間のナビゲートに使用されるショートカットが NavigationProperty 要素によって宣言されます。

たとえば、Employee 型とマネージャとして指定された別の Employee 型の間で Association が定義されている場合は、Employee エンティティに対してナビゲーション プロパティを指定することによって、管理される側の Employee とマネージャとの間をナビゲートできるようになります。

AdventureWorksHRModel スキーマの Human Relations セグメントから抜粋した次の例では、Employee エンティティが定義され、一部の従業員をマネージャとして指定する Employee エンティティ間の Association が定義されています。Association は、型は同じであるが Role の異なるエンティティ間のアソシエーションです。

Association 要素は、Employee_Employee_ManagerID という名前のアソシエーションを宣言します。このアソシエーションの末尾にある Employee エンティティの唯一特徴的な属性は、AssociationSet 定義で指定されている Role 属性です。この場合は、後者の Role によって EmployeeManager が指定されます。

Association 宣言にある End 要素の Multiplicity 属性は、Employee を従業員数 0 人以上のマネージャに指定できることを示します。Employee は、RoleEmployeeManager によって指定されたマネージャを 1 人だけ持つことができます。

  <EntityType Name="Employee" Key="EmployeeID">
    <Key>
        <PropertyRef Name="EmployeeID">
    </Key>
    <Property Name="EmployeeID" Type="Int32" Nullable="false" />
    <!-- Other properties omitted for brevity-->

<NavigationProperty Name="Employee1" 
Relationship="Adventureworks.FK_Employee_Employee_ManagerID" 
FromRole="Employee" ToRole="Employee1" />  </EntityType>

<NavigationProperty Name="Employee2" 
Relationship="Adventureworks.FK_Employee_Employee_ManagerID" 
FromRole="Employee1" ToRole="Employee" />

  <EntityContainer Name="HumanResources">

    <EntitySet Name="Employee" EntityType="Adventureworks.Employee" />

    <AssociationSet Name="FK_Employee_Employee_ManagerID"
      Association="Adventureworks.FK_Employee_Employee_ManagerID">
        <End Role="Employee" EntitySet="Employee" />
        <End Role="Employee1" EntitySet="Employee" />
    </AssociationSet>

  </EntityContainer>

NavigationProperty は、NavigationProperty が含まれた Employee エンティティのマネージャである、Employee エンティティへのショートカットです。これらのスキーマに基づいたオブジェクト モデルを構築した場合、Employee クラスには、NavigationProperty によって指定されたアソシエーションをナビゲートするために使用されるヘルパ メソッドと Manager プロパティが含まれます。これらのヘルパ メソッドは、オブジェクト モデルと共に自動的に構築されます。

ナビゲーション プロパティを使用すると、コレクションと同様に機能するプロパティをコードで実装できます。ナビゲーション プロパティとコレクションの詳細については、「ナビゲーション プロパティ (EDM)」を参照してください。

NavigationProperty 要素は、概念スキーマ定義言語 (CSDL) でのみ使用されます。これに相当するストア スキーマ定義言語 (SSDL) メタデータの要素は、このアソシエーションをサポートする主キー/外部キーのリレーションシップをデータベースで指定します。メタデータでは、このアソシエーションに参照に関する制約が含まれます。ReferentialConstraint 属性の詳細については、「ReferentialConstraint 要素 (アソシエーション SSDL)」および「Association 要素 (SSDL)」を参照してください。

参照

概念

Entity Data Model のリレーションシップ
Association 要素 (CSDL)
Multiplicity 属性 (アソシエーション CSDL)
AdventureWorks Complete Model (EDM)
ナビゲーション プロパティ (EDM)
Association 要素 (SSDL)
ReferentialConstraint 要素 (アソシエーション SSDL)