Share via


概念スキーマ (CSDL)

概念スキーマとは、エンティティ データ モデル (EDM) 上に構築されたアプリケーションによって使用される、オブジェクト モデル用のデザイン テンプレートのことです。概念スキーマで宣言された名前空間名は、生成されるオブジェクト モデルでエンティティ クラスとアソシエーション クラスを修飾する名前空間名になります。

EDM アーキテクチャは、エンティティとアソシエーションの基本構造を提供します。アプリケーション デザイナは、これらの型に基づくエンティティとアソシエーションを派生させます。概念スキーマで定義された型は、ストレージ モデルを表すメタデータにマップされます。

概念スキーマでは、概念スキーマ定義言語 (CSDL) と呼ばれる XML 言語が使用され、ストレージ メタデータでは、ストア スキーマ定義言語 (SSDL) と呼ばれる XML 言語が使用されます。

[!メモ]

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

名前空間とマッピング

概念スキーマのルート要素は、Schema 要素です。この要素には、CSDL 名前空間を指定する Namespace 属性が含まれています。この名前空間は、CSDL の型をストレージ メタデータに関連付けるために、マッピング スキーマで使用されます。

CSDL スキーマからの次の宣言には、サンプル アプリケーション AdventureWorksHRModel のエンティティとアソシエーションをストレージ メタデータにマップするためにマッピング スキーマで使用される名前空間が含まれています。

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

SSDL ファイルにも同じような行があります。

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

これらの宣言で使用される名前空間の名前は、作成されるデータ モデルでのそれぞれの目的を表しています。AdventureWorksHRModel は、これらの例では対象のメタデータ名前空間 AdventureWorksHRTarget にマップされる概念モデルです。

概念スキーマとストレージ スキーマ内のエンティティ コンテナ要素は、どちらの場合も Schema 要素の子要素ですが、Schema 要素から独立しています。

マッピング スキーマでは、EntityContainerMapping 要素によって 2 つのコンテナ オブジェクトがマップされ、名前空間の名前である edm:CdmEntityContainer="HumanResources"``edm:StorageEntityContainer="HumanResources" は参照されません。スキーマの名前空間の名前によって修飾されたエンティティ コンテナ名を使用すると、マッピング例外が発生します。

次のマッピング スキーマ言語 (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">

その他の CSDL スキーマ要素も同様に、マッピング スキーマ内の SSDL 仕様にマップされます。このセクションの各トピックでは、EDM 上に構築されるオブジェクト モデルの実装に使用する型および要素について説明します。

トピックの内容

Schema 要素 (CSDL)

Namespace 属性 (CSDL)

EntityType 要素 (CSDL)

Association 要素 (CSDL)

EntityContainer 要素 (CSDL)

参照

概念

エンティティの実装 (EDM)
アソシエーションの実装 (EDM)
AdventureWorks Complete Model (EDM)

その他のリソース

EDM 仕様