Схема метаданных хранилища (язык SSDL)
Схема метаданных хранилища представляет собой формальное описание базы данных, в которой сохраняются данные для приложения, построенного на модели Entity Data Model (EDM). Сущности и ассоциации, объявленные в этой схеме, являются основой для сопоставления сущностей и ассоциаций в концептуальной схеме с соответствующими сущностями в модели хранения.
Сущность, объявленная на языке SSDL, очень похожа на сущность языка CSDL. Основное различие заключается в типах данных, используемых в декларациях на языке SSDL. Типы данных свойств, объявленных в файлах на языке SSDL, содержатся в модели хранения. Типы данных в файлах на языке CSDL представляют собой простые типы, определенные в модели EDM. Сопоставление этих типов — одна из функций модели EDM. Дополнительные сведения о типах данных, используемых в языках CSDL и SSDL, см. в разделе Простые типы (модель EDM).
Метаданные и сопоставление
Имя пространства имен и контейнер сущностей, объявленный в SSDL-схеме, представляют собой метаданные, используемые спецификацией сопоставления для соединения таблиц хранилища с сущностями в CSDL-схеме.
![]() |
---|
Пространства имен SSDL отличаются от пространств имен XML. Пространства имен SSDL используются для задания полных имен типа сущности и имен ассоциаций. Например, в ссылках языка MSL на типы сущностей должно быть предоставлено полное имя. Язык SSDL находится в пространстве имен XML |
Следующие строки в SSDL-схеме Human Resources объявляют пространство имен для метаданных, содержащихся в этой схеме. Это пространство имен будет использоваться языком 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. Элемент EntityContainerMapping в языке MSL сопоставляет элемент EntityContainer SSDL-файла с элементом EntityContainer в CSDL-файле без ссылок на имена пространства имен, объявленных в каждой схеме: 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, используемый в примерах этого раздела, более полно описан в следующих разделах:
Элемент EntityType (язык SSDL)
Элемент Association (язык SSDL)
Элемент EntityContainer (язык SSDL)