Поделиться через


Схема метаданных хранилища (язык SSDL)

Схема метаданных хранилища представляет собой формальное описание базы данных, в которой сохраняются данные для приложения, построенного на модели Entity Data Model (EDM). Сущности и ассоциации, объявленные в этой схеме, являются основой для сопоставления сущностей и ассоциаций в концептуальной схеме с соответствующими сущностями в модели хранения.

Сущность, объявленная на языке SSDL, очень похожа на сущность языка CSDL. Основное различие заключается в типах данных, используемых в декларациях на языке SSDL. Типы данных свойств, объявленных в файлах на языке SSDL, содержатся в модели хранения. Типы данных в файлах на языке CSDL представляют собой простые типы, определенные в модели EDM. Сопоставление этих типов — одна из функций модели EDM. Дополнительные сведения о типах данных, используемых в языках CSDL и SSDL, см. в разделе Простые типы (модель EDM).

Метаданные и сопоставление

Имя пространства имен и контейнер сущностей, объявленный в SSDL-схеме, представляют собой метаданные, используемые спецификацией сопоставления для соединения таблиц хранилища с сущностями в CSDL-схеме.

NoteПримечание.

Пространства имен SSDL отличаются от пространств имен XML. Пространства имен SSDL используются для задания полных имен типа сущности и имен ассоциаций. Например, в ссылках языка MSL на типы сущностей должно быть предоставлено полное имя. Язык SSDL находится в пространстве имен XML https://schemas.microsoft.com/ado/2006/04/edm/ssdl. Эти два типа пространств имен различны и их не следует путать.

Следующие строки в 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, используемый в примерах этого раздела, более полно описан в следующих разделах:

Schema, элемент (язык SSDL)

Атрибут Namespace (язык SSDL)

Элемент EntityType (язык SSDL)

Элемент Association (язык SSDL)

Элемент EntityContainer (язык SSDL)

См. также

Основные понятия

Типы модели EDM
Полная модель AdventureWorks (модель EDM)