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


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

В модели Entity Data Model (EDM) элемент AssociationSet в файле на языке SSDL задает ассоциацию в метаданных хранилища.

Модель объектов, которая будет построена из концептуальной схемы, требует, чтобы и программируемые классы, и структуры хранилища содержали данные приложений, построенные на основе этой модели. Элемент AssociationSetMapping языка MSL соединяет элемент AssociationSet, определенный на языке CSDL, с элементом AssociationSet на языке SSDL, описывающим структуры хранилища.

Следующий синтаксис языка CSDL иллюстрирует декларацию объекта типа AssociationSet с именем FK_Employee_Employee_ManagerID в схеме AdventureWorks.Store. Этот объект AssociationSet содержится в контейнере EntityContainer с именем AdventureWorks.Store в метаданных AdventureWorks. Хотя этот элемент EntityContainer определен в схеме AdventureWorks.Store, контейнер EntityContainer является независимым элементом.

Элемент AssociationSet присваивает имя Name и определяет ассоциацию AssociationType, которая используется в этом назначении набора ассоциаций.

  <EntityContainer Name="Adventureworks.Store">
<AssociationSet Name="FK_Employee_Employee_ManagerID"
        Association="Adventureworks.Store.FK_Employee_Employee_ManagerID">
      <End Role="Employee" EntitySet="Employee" />
      <End Role="Employee1" EntitySet="Employee" />
    </AssociationSet>
  </EntityContainer>

  <Association Name="FK_Employee_Employee_ManagerID">
    <End Role="Employee" Type="Adventureworks.Store.Employee" Multiplicity="0..1" />
    <End Role="Employee1" Type="Adventureworks.Store.Employee" Multiplicity="*" />
    <ReferentialConstraint>
      <Principal Role="Employee">
        <PropertyRef Name="EmployeeID" />
      </Principal>
      <Dependent Role="Employee1">
        <PropertyRef Name="ManagerID" />
      </Dependent>
    </ReferentialConstraint>
  </Association>

В этом примере элемент ReferentialConstraint указывает, что ассоциации зависят от структур базы данных. Элемент ReferentialConstraint задает свойства Principal Role, Dependent Role и, что самое важное, PropertyRef для каждой роли, соответствующей связи по внешнему ключу в базе данных.

Свойство PropertyRef элемента Principal Role задает свойство, которое назначается столбцу внешнего ключа таблицы Employee. Атрибут PropertyRef элемента Dependent Role задает столбец, содержащий внешний ключ. Например, в ассоциации FK_Employee_Employee_ManagerIDPropertyRef элемент Dependent Role является свойством EmployeeID руководителя, которое содержится в столбце внешнего ключа ManagerID таблицы Employee. Полный пример использования ReferentialConstraint см. в разделе Реализация ассоциаций (модель EDM).

После построения программной модели объектов в коде приложения можно создавать экземпляры сущностей с типом FK_Employee_Employee_ManagerID.

Для полноты представления декларация элемента AssociationType включена в пример после деклараций элементов EntityContainer и AssociationSet.

См. также

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

Элемент AssociationSet (EntityContainer, язык CSDL)
Элемент EntitySetMapping (язык MSL)
Наборы сущностей (модель EDM)
Наборы ассоциаций (модель EDM)
Полная модель AdventureWorks (модель EDM)