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


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

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

Следующий синтаксис показывает декларацию и определение ассоциации двух сущностей одного типа. Обе конечные точки ассоциации представляют сущности служащих. Один служащий занимает должность руководителя, другой – его подчиненный.

Приведенный здесь синтаксис включает элемент Schema с определенным пространством имен Namespace и псевдонимом Alias модели Adventure Works Human Resources Model. Также включается декларация сущности Employee, которая используется в элементе Association.

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

  <EntityType Name="Employee">
    <Key>
      <PropertyRef Name="EmployeeID" />
    </Key>
    <Property Name="EmployeeID" Type="Int32" Nullable="false" />
    <Property Name="NationalIDNumber" Type="String" Nullable="false" />
    <Property Name="LoginID" Type="String" Nullable="false" />
    <Property Name="Title" Type="String" Nullable="false" />
    <Property Name="BirthDate" Type="DateTime" Nullable="false" />
    <Property Name="Gender" Type="String" Nullable="false" />
    <Property Name="HireDate" Type="DateTime" Nullable="false" />
    <Property Name="SalariedFlag" Type="Boolean" Nullable="false" />
    <Property Name="ModifiedDate" Type="DateTime" Nullable="false" />
<!- Some employee properties ommitted for brevity -->

    <NavigationProperty Name="Employee1"
        Relationship="Adventureworks.FK_Employee_Employee_ManagerID"
        FromRole="Employee" ToRole="Employee1" />

  </EntityType>

  <Association Name="Employee_Employee_ManagerID">
    <End Role="Employee" Type="Self.Employee" Multiplicity="0..1" />
    <End Role="Employee1" Type="Self.Employee"
                                              Multiplicity="*" />
  </Association>

Элемент Association задает логическую связь сущностей Employee в соответствии со назначениями Type свойств End в ассоциации Association. Оба элемента ассоциации имеют тип Employee. Один из служащих обозначается как Employee1 атрибутом Role свойства End в ассоциации Association. Атрибут Multiplicity атрибутов End в этом примере указывает, что служащий Employee, являющийся руководителем, может управлять любым количеством экземпляров Employee1. Свойство навигации NavigationProperty в определении типа Employee показывает связь служащего-руководителя и управляемых служащих.

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

См. также

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

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

Другие ресурсы

Спецификации модели EDM