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


Элемент Association (модель EDM)

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

Каждая сущность, участвующая в ассоциации, обозначается как элемент End. Каждый элемент End имеет атрибут Role, который используется для именования и описания каждого элемента End в ассоциации.

Атрибуты Type, относящиеся к элементам ассоциации, определяют типы сущностей, участвующих в связи.

Ассоциации имеют атрибут Multiplicity. Атрибут Multiplicity задает количество экземпляров каждого элемента End, который может участвовать в связи.

Функционирование многих бизнес-приложений основано на том, что заказчики размещают свои заказы, после чего в соответствии с заказами должна быть выполнена доставка заказчикам. Связь между заказчиком и заказом может быть промоделирована с помощью ассоциации модели EDM. Элементами ассоциации являются сущности заказчика и заказа. Каждый элемент End имеет сущность Type. Атрибут Role описывает назначение сущности, обозначенной атрибутом Type. В большинстве случаев каждый заказчик может иметь от нуля или больше заказов, но каждый заказ связан точно с одним заказчиком. Иными словами, атрибут Multiplicity для типа заказчика равен 1, а кратность заказа обозначается как *. Дополнительные сведения о типах Multiplicity см. в разделе Связи в модели EDM.

Пример

В следующем синтаксисе на языке CSDL применяется элемент Association для задания характеристик связи между Customers и Orders.

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


<EntityType Name="Customer">
    <Key>
      <PropertyRef Name="CustomerId" />
    </Key>
    <Property Name="CustomerId" Type="Guid" Nullable="false" />
    <Property Name="Name" Type="String" Nullable="false" />
    <Property Name="Address" Type="String" Nullable="false" />
    <Property Name="City" Type="String" Nullable="false" />
    <NavigationProperty Name="Orders" Relationship="Self.Order_Customer" FromRole="Customers" ToRole="Orders" />
  </EntityType>

  <EntityType Name="Order">
    <Key>
      <PropertyRef Name="OrderId" />
    </Key>
    <Property Name="OrderId" Type="String" Nullable="false" />
    <Property Name="TotalAmount" Type="Decimal" />
    <Property Name="Tax" Type="Decimal" />
    <Property Name="ShippingAddress" Type="String" />
    <NavigationProperty Name="Customer" Relationship="Self.Order_Customer" FromRole="Orders" ToRole="Customers" />
  </EntityType>

  <Association Name="Order_Customer">
    <End Role="Customer" Type="OrderInfoModel.Customers"
                             Multiplicity="1" />
    <End Role="Orders" Type="OrderInfoModel.Order" Multiplicity="*" />
  </Association>


    <EntityContainer Name="LOBSchemaData">
        <EntitySet Name="Customers" EntityType="Self.Customer" />
        <EntitySet Name="Orders" EntityType="Self.Order" />
        <AssociationSet Name="Customers_Orders"
                        Association="Self.Order_Customer">
            <End Role="Customer" EntitySet="Customers" />
            <End Role="Order" EntitySet="Orders" />
        </AssociationSet>
        
    </EntityContainer>
</Schema>

Атрибут Name ассоциации Order_CustomerAssociation используется для идентификации связи во всех операциях. Каждая участвующая сущность представляет собой элемент End. Атрибут Type ассоциации во всех операциях. Каждая участвующая сущность, являющаяся элементом End, указывает тип сущности, участвующей в ассоциации, в данном случае Customers и Orders. У каждого элемента End имеются атрибуты Role и Multiplicity.

Характеристики ассоциаций модели EDM

Ассоциация имеет следующие характеристики:

  • Кратность: Элементы ассоциации End могут иметь кратность 0..n, где количество элементов End может изменяться.

  • Немонопольная принадлежность: тип сущности может участвовать в нескольких ассоциациях.

  • Направление: Ассоциации между сущностями являются двунаправленными, и переход по ним может осуществляться от обоих элементов End.

Кратность

Атрибут Multiplicity определяет количество элементов во всех операциях. Каждая участвующая сущность представляет собой элемент End для Association. В предыдущем примере на языке CSDL показано, что имеется точно один элемент Customer (Multiplicty="1"), к которому относятся нуль или больше заказов (Multiplicty="*").

В следующей таблице перечислены все возможные значения атрибута Multiplicity:

Значение Описание

0..1

Нуль или один

1

Точно один

*

Нуль или более

Немонопольная принадлежность:

Тип сущности может участвовать в нескольких ассоциациях.

Направление

Ассоциации в модели EDM являются двунаправленными.

См. также

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

Связи в модели EDM