次の方法で共有


Namespace 属性 (CSDL)

エンティティ データ モデル (EDM) では、概念スキーマ定義言語 (CSDL) で宣言されている名前空間の名前にいくつかの役割があります。ビルド プロセスで、プログラム可能なクラスをアプリケーションのデータを保存するストレージ構造に関連付けるには、CSDL スキーマの型およびコンテナをストレージ メタデータにマップする必要があります。マッピング スキーマ言語 (MSL) によって、ストレージ モデルを記述するストア スキーマ定義言語 (SSDL) の定義に概念型が関連付けられます。

オブジェクト モデルが CSDL ファイルから構築された後、アプリケーション コードでは、CSDL ファイルで指定された名前空間を使用して、ビルド プロセスで作成された DLL のクラスを参照します。次の using ディレクティブは、AdventureWorksHRModel 名前空間のクラスを指定します。

using AdventureWorksHRModel;

EDM アプリケーションに必要な exe.config ファイルでも、CSDL スキーマで宣言される名前空間によってこのオブジェクト モデルが識別されます。この例では、接続文字列に HumanResources クラス名が含まれています。このクラス名は、エンティティ コンテナの名前に基づいています。

エンティティ コンテナの詳細については、「エンティティ コンテナ (EDM)」を参照してください。

<connectionStrings>
    <add name="HumanResources" connectionString='metadata=.;
    provider=System.Data.SqlClient; provider connection 
                                          string="server=servername;
    database=AdventureWorks; integrated security=true;
    multipleactiveresultsets=true"' providerName="System.Data.Mapping"/>
</connectionStrings>

exe.config ファイルに以前の接続文字列がある場合、次のステートメントによって、アプリケーション コードで使用するために HumanResources EntityConnection をインスタンス化する必要があります。

HumanResources hrDb = new HumanResources();

名前空間とマッピング

CSDL スキーマの Schema 要素には、オブジェクト モデルを指定するために使用する名前空間名が含まれています。

<?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 にマップされる概念モデルです。

概念スキーマおよびストレージ スキーマ内の EntityContainer 要素は、Schema 要素に含まれている場合でも、Schema 要素からは独立しています。マッピング スキーマでは、EntityContainerMapping 要素は、名前空間の名前である edm:CdmEntityContainer="HumanResources"``edm:StorageEntityContainer="HumanResources" を参照せずにコンテナ オブジェクトを参照することによって 2 つの名前空間をマップします。

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

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

別名

CSDL の Namespace 属性には、スキーマの後続部分で名前空間の名前を短縮するために使用できる Alias 属性があります。次の例では、文字列 SelfAlias 属性に割り当てます。

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

Alias はスキーマの後続部分で非常に便利であり、次の構文に示されているように読みやすくなります。

  <EntityContainer Name="HumanResources">
    <EntitySet Name="Department" EntityType="Self.Department" />
    <EntitySet Name="Employee" EntityType="Self.Employee" />
    <EntitySet Name="EmployeeAddress" EntityType="Self.EmployeeAddress" />

Xmlns

前の例には、URL が割り当てられた xmlns 属性も含まれています。すべての CSDL スキーマで、これと同じ URL が使用されます。

参照

概念

ストレージ メタデータ スキーマ (SSDL)
マッピング スキーマ (MSL)
AdventureWorks Complete Model (EDM)