Namespace 屬性 (CSDL)
在概念結構定義語言 (CSDL) 中宣告的命名空間名稱具有 實體資料模型 (EDM) 中的幾個函式。為了要讓建置程序能夠將可程式化類別連接到保存應用程式資料的儲存結構,CSDL 結構描述中的型別和容器都必須對應到儲存中繼資料。對應規格語言 (MSL) 會將概念型別連接到描述儲存模型之存放結構定義語言 (SSDL) 中的定義。
當從 CSDL 檔案建置物件模型之後,應用程式程式碼會使用 CSDL 檔案中所指定的命名空間來參考建置程序建立之 DLL 中的類別。下列 using 指示詞會識別 AdventureWorksHRModel
命名空間中的類別。
using AdventureWorksHRModel;
CSDL 結構描述中宣告的命名空間也會在 EDM 應用程式所需的 exe.config 檔中識別這個物件模型。在此範例中,連接字串包括 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 項目會依傳址 (By Reference) 方式將兩個命名空間對應到其容器物件,而不會參考其命名空間名稱:edm:CdmEntityContainer="HumanResources"``edm:StorageEntityContainer="HumanResources"
。
下列 MSL 標題會顯示在概念結構描述中的 HumanResources 實體容器 (這裡稱為 CdmEntityContainer) 與儲存中繼資料 (這裡稱為 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 屬性,後者的屬性可用來縮短其餘結構描述中的命名空間名稱。下列範例會將 Self 字串指派給 Alias 屬性。
<?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。