次の方法で共有


ストレージ メタデータ スキーマ (SSDL)

ストレージ メタデータ スキーマは、エンティティ データ モデル (EDM) で構築されたアプリケーションのデータを永続化するデータベースの正式な記述です。このスキーマで宣言されたエンティティとアソシエーションは、概念スキーマのエンティティとアソシエーションをストレージ モデル内の対応するエンティティにマップするための基礎となります。

ストア スキーマ定義言語 (SSDL) で宣言されるエンティティは、概念スキーマ定義言語 (CSDL) のエンティティと非常によく似ています。主な相違点は、SSDL 宣言で使用されるデータ型です。SSDL ファイルで宣言されるプロパティのデータ型は、ストレージ モデルのデータ型になります。CSDL ファイルのデータ型は、EDM で定義される単純型になります。これらの型間のマッピングは、EDM の機能の 1 つです。CSDL および SSDL で使用されるデータ型の詳細については、「単純型 (EDM)」を参照してください。

メタデータとマッピング

SSDL スキーマで宣言される名前空間名とエンティティ コンテナは、ストレージ内のテーブルを CSDL スキーマ内のエンティティに接続するためにマッピング スキーマが使用するメタデータです。

[!メモ]

SSDL 名前空間は、XML 名前空間とは異なります。SSDL 名前空間は、エンティティの型名とアソシエーション名を完全修飾するために使用されます。たとえば、マッピング スキーマ言語 (MSL) がエンティティの型を参照する場合は、完全修飾名を指定する必要があります。SSDL は XML 名前空間 https://schemas.microsoft.com/ado/2006/04/edm/ssdl に含まれています。これら 2 種類の名前空間はそれぞれ独立した個別のものなので、混同しないようにしてください。

Human Resources SSDL スキーマ内の以下の行では、このスキーマに含まれているメタデータの名前空間を宣言します。名前空間名はマッピング スキーマ言語 (MSL) によって使用されます。

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

SSDL スキーマには、マッピング スキーマによっても使用される EntityContainer 要素が含まれています。次の SSDL セグメントでは、エンティティ コンテナの宣言を示します。

  <EntityContainer Name="HumanResources">
    <EntitySet Name="Department" EntityType="Self.Department" />
    <EntitySet Name="Employee" EntityType="Self.Employee" />
    <EntitySet Name="EmployeeAddress" EntityType="Self.EmployeeAddress" />
    <EntitySet Name="EmployeeDepartmentHistory"
                      EntityType="Self.EmployeeDepartmentHistory" />
    <EntitySet Name="EmployeePayHistory"
                             EntityType="Self.EmployeePayHistory" />
    <EntitySet Name="JobCandidate" EntityType="Self.JobCandidate" />
    <EntitySet Name="Shift" EntityType="Self.Shift" />
    <AssociationSet Name="FK_Employee_Employee_ManagerID"
                  Association="Self.FK_Employee_Employee_ManagerID">
      <End Role="Employee" EntitySet="Employee" />
      <End Role="Employee63" EntitySet="Employee" />
    </AssociationSet>
    <AssociationSet Name="FK_JobCandidate_Employee_EmployeeID" 
            Association="Self.FK_JobCandidate_Employee_EmployeeID">
      <End Role="Employee" EntitySet="Employee" />
      <End Role="JobCandidate" EntitySet="JobCandidate" />
    </AssociationSet>
  </EntityContainer>

SSDL メタデータ内のエンティティとアソシエーションは、ストレージ モデル内のテーブルと列を指定します。このメタデータは CSDL スキーマ内のエンティティとストレージ内のエンティティ間のマッピングに必要です。

概念スキーマ内およびストレージ スキーマ内の EntityContainer 要素は Schema 要素に含まれていますが、Schema 要素からは独立しています。MSL の EntityContainerMapping 要素は、edm:CdmEntityContainer="HumanResources" スキーマと edm:StorageEntityContainer="HumanResources" スキーマで宣言されている名前空間名を参照しないで、SSDL ファィルの EntityContainer を CSDL ファイルの EntityContainer にマップします。

次の MSL 見出しは、ここで CdmEntityContainer と呼ばれている概念スキーマ内の HumanResources エンティティ コンテナと、StorageEntityContainer と呼ばれているストレージ メタデータ間のマッピングを示しています。

<?xml version="1.0" encoding="utf-8"?>
<Mapping edm:Space="C-S" 
    xmlns="urn:schemas-microsoft-com:windows:storage:mapping:CS">
  < EntityContainerMapping
                  CdmEntityContainer="HumanResources"
                  StorageEntityContainer="HumanResources">

このトピックの例で使用されている SSDL 構文については、次のトピックでさらに詳しく説明されています。

Schema 要素 (SSDL)

Namespace 属性 (SSDL)

EntityType 要素 (SSDL)

Association 要素 (SSDL)

EntityContainer 要素 (SSDL)

参照

概念

Entity Data Model の型
AdventureWorks Complete Model (EDM)