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


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

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

Синтаксис языка SSDL для ассоциации, объявленной в схеме метаданных, похож на используемый в языке CSDL, но содержит атрибуты FromRole и ToRole. Эти атрибуты эквивалентны первичному и внешнему ключам в таблицах базы данных.

В следующем примере схемы имеется элемент Schema с атрибутами Namespace и Alias определяемого раздела базы данных-получателя Adventure Works Human Resources. Одно определение EntityType — все, что нужно в этом примере, так как оба элемента ассоциации Employee_Employee_ManagerID являются сущностями Employee.

<?xml version="1.0" encoding="utf-8"?>
<Schema Namespace="AdventureWorksHRTarget" Alias="Self"
        xmlns="https://schemas.microsoft.com/ado/2006/04/edm/ssdl">

  <EntityType Name="Employee">
    <Key>
      <PropertyRef Name="EmployeeID" />
    </Key>
    <Property Name="EmployeeID" Type="int" Nullable="false" />
    <Property Name="NationalIDNumber" Type="nvarchar" Nullable="false" MaxLength="15" />
    <Property Name="ContactID" Type="int" Nullable="false" />
    <Property Name="LoginID" Type="nvarchar" Nullable="false" MaxLength="256" />
    <Property Name="ManagerID" Type="int" />
<!- Some employee properties ommitted for brevity -->
  </EntityType>

  <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>

В этой декларации сущности Employee, используемом в ассоциации Employee_Employee_ManagerID, свойства сущности Employee обозначены с использованием типов данных модели хранения, в данном случае типов SQL Server.

Элемент Association определяет логическую связь между двумя сущностями Employee. Назначения Type свойств End ассоциации Association представляют собой сущности Employee. Один из сотрудников обозначен как Employee1 атрибутом Role свойства End ассоциации Association.

Для присваивания типов в ассоциациях необходимо использовать полные имена. В этом примере в присваивании типов используется ключевое слово SelfAlias для пространства имен AdventureWorksHRTarget.

Свойство Mulitiplicity атрибутов End ассоциации Association указывает, что Employeee1 может быть участником любого числа (0 и более) экземпляров данной ассоциации; менеджер может управлять несколькими сотрудниками, но сотрудник Employee1 может подчиняться одному менеджеру и поэтому может участвовать не более чем в одной ассоциации такого типа.

Свойство ReferentialConstraint ассоциации Association задает Employee1 как DependentRole, а Employee как PrincipalRole. Это ограничение соответствует внешнему ключу ManagerID в таблице данных Employee.

Дополнительные сведения об атрибутах ассоциаций см. в следующих разделах:

Name (Association, язык SSDL)

Атрибут Role (элемент Association, язык SSDL)

Атрибут Type (Association, язык SSDL)

Атрибут Multiplicity (Association, язык SSDL)

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

См. также

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

Элемент AssociationSet (EntityContainer, язык SSDL)
Элемент Association (язык CSDL)
Элемент AssociationSetMapping (язык MSL)
Элемент ReferentialConstraint (Association, язык SSDL)
Полная модель AdventureWorks (модель EDM)