概念スキーマ (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 上に構築されるオブジェクト モデルの実装に使用する型および要素について説明します。
トピックの内容
参照
概念
エンティティの実装 (EDM)
アソシエーションの実装 (EDM)
AdventureWorks Complete Model (EDM)