儲存中繼資料結構描述 (SSDL)
儲存中繼資料結構描述是保存 實體資料模型 (EDM) 上建置之應用程式資料之資料庫的正式描述。此結構描述中所宣告的實體和關聯是用來將概念結構描述中的實體和關聯對應到儲存模型中之對應實體的基礎。
存放結構定義語言 (SSDL) 中所宣告的實體非常類似於概念結構定義語言 (CSDL) 中的實體。其差異主要在於 SSDL 宣告中所使用的資料型別。SSDL 檔案中宣告之屬性的資料型別就是儲存模型的資料型別。CSDL 檔案中的資料型別是 EDM 所定義的簡單型別。這些型別之間的對應是 EDM 的其中一個函式。如需 CSDL 和 SSDL 中使用之資料型別的詳細資訊,請參閱簡單型別 (EDM)。
中繼資料和對應
SSDL 結構描述中宣告的命名空間名稱和實體容器是由對應規格所使用,以便將儲存區中的資料表連接到 CSDL 結構描述中的實體。
附註 |
---|
SSDL 命名空間與 XML 命名空間不同。SSDL 命名空間是用來完整限定實體類型名稱和關聯名稱。例如,當對應規格語言 (MSL) 參考實體類型時,必須提供完整限定名稱。SSDL 位於 XML 命名空間 |
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 項目會將 SSDL 檔案的 EntityContainer 對應到 CSDL 檔案中的 EntityContainer,而不需參考每一個結構描述中宣告的命名空間名稱:edm:CdmEntityContainer="HumanResources"``edm:StorageEntityContainer="HumanResources"
。
下列 MSL 標題會顯示在概念結構描述中的 HumanResources 實體容器 (這裡稱為 CdmEntityContainer) 與儲存中繼資料 (這裡稱為 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 語法在以下主題中有更完整的描述: