Association 要素 (SSDL)

エンティティ データ モデル (EDM) では、メタデータ スキーマ内のアソシエーションは、ストア スキーマ定義言語 (SSDL) で定義されたエンティティ型どうしの論理リレーションシップを指定します。

メタデータ スキーマ内で宣言されたアソシエーションの SSDL 構文は、概念スキーマ定義言語 (CSDL) で使用されている構文に似ていますが、SSDL 構文には、FromRole および ToRole を指定する属性が含まれています。これらの属性は、データベース テーブルの主キーおよび外部キーと同等です。

次のスキーマ例には、定義される Adventure Works Human Resources ターゲット データベースの Namespace および Alias と共に Schema 要素が含まれます。Employee_Employee_ManagerID アソシエーションの両方の End は Employee エンティティなので、この例で必要なのは 1 つの EntityType 定義だけです。

<?xml version="1.0" encoding="utf-8"?>
<Schema Namespace="AdventureWorksHRTarget" Alias="Self"
        xmlns="https://schemas.microsoft.com/ado/2006/04/edm/ssdl">

  <EntityType Name="Employee">
    <Key>
      <PropertyRef Name="EmployeeID" />
    </Key>
    <Property Name="EmployeeID" Type="int" Nullable="false" />
    <Property Name="NationalIDNumber" Type="nvarchar" Nullable="false" MaxLength="15" />
    <Property Name="ContactID" Type="int" Nullable="false" />
    <Property Name="LoginID" Type="nvarchar" Nullable="false" MaxLength="256" />
    <Property Name="ManagerID" Type="int" />
<!- Some employee properties ommitted for brevity -->
  </EntityType>

  <Association Name="FK_Employee_Employee_ManagerID">
    <End Role="Employee" Type="Adventureworks.Store.Employee" Multiplicity="0..1" />
    <End Role="Employee1" Type="Adventureworks.Store.Employee" Multiplicity="*" />
    <ReferentialConstraint>
      <Principal Role="Employee">
        <PropertyRef Name="EmployeeID" />
      </Principal>
      <Dependent Role="Employee1">
        <PropertyRef Name="ManagerID" />
      </Dependent>
    </ReferentialConstraint>
  </Association>

このアソシエーション Employee_Employee_ManagerID で使用される Employee の宣言では、Employee エンティティのプロパティは、ストレージ モデルのデータ型 (この場合は SQL Server 型) を使用して指定されます。

Association 要素は、2 つの Employee エンティティ間の論理リレーションシップを定義します。AssociationEnd プロパティの Type 割り当ては、どちらも Employee エンティティです。一方の従業員 (employee) は、AssociationEnd プロパティの Role 属性によって Employee1 として指定されます。

アソシエーションの型の割り当てでは、完全修飾名を使用する必要があります。この例では、型の割り当てに、AdventureWorksHRTarget 名前空間の SelfAlias が使用されています。

この AssociationEnd 属性の Mulitiplicity は、このアソシエーションの 0 個以上のインスタンスに Employeee1 が参加できることを示します。マネージャは複数の従業員を管理できますが、管理される側の Employee1 のマネージャは 1 人だけなので、参加できるのは、この型の 0 または 1 つのアソシエーションです。

AssociationReferentialConstraint は、Employee1DependentRole として指定し、EmployeePrincipalRole として指定します。この制約は、Employee データ テーブルの外部キー ManagerID に対応します。

アソシエーションの属性の詳細については、以下のサブトピックを参照してください。

Name (アソシエーション SSDL)

Role 属性 (アソシエーション SSDL)

Type 属性 (アソシエーション SSDL)

Multiplicity 属性 (アソシエーション SSDL)

ReferentialConstraint 要素 (アソシエーション SSDL)

参照

概念

AssociationSet 要素 (EntityContainer SSDL)
Association 要素 (CSDL)
AssociationSetMapping 要素 (MSL)
ReferentialConstraint 要素 (アソシエーション SSDL)
AdventureWorks Complete Model (EDM)