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

Элемент Association определяет связь между двумя типами сущностей. Ассоциация должна указывать типы сущностей, которые участвуют в связи, и возможное количество типов сущностей на каждом конце связи, которое называется кратностью. Кратность элемента ассоциации может иметь значение «один» (1), «ноль или один» (0..1) или «многие» (*). Эти сведения заданы в двух дочерних элементах End.

К экземплярам типов сущностей в одном элементе ассоциации можно обращаться посредством свойств навигации или внешних ключей, если они предоставлены в типе сущности. Дополнительные сведения см. в разделах Элемент NavigationProperty, Элемент ReferentialConstraint и Определение отношений и управление отношениями (платформа Entity Framework).

В приложении экземпляр ассоциации представляет конкретную ассоциацию между экземплярами типов сущностей. Экземпляры ассоциации логически сгруппированы в набор ассоциаций. Дополнительные сведения см. в разделе Элемент AssociationSet.

Элемент Association может иметь следующие дочерние элементы (в порядке перечисления).

Применимые атрибуты

В таблице ниже описываются атрибуты, которые можно применить к элементу Association.

Имя атрибута Необходимо Значение

Name

Да

Имя ассоциации.

Bb399734.note(ru-ru,VS.100).gifПримечание
К элементу Association может быть применено любое количество атрибутов annotation (настраиваемых атрибутов XML).Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для CSDL.Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

В следующем примере показан элемент Association, который определяет ассоциацию CustomerOrders, если внешние ключи не представлены в типах сущностей Customer и Order. Значения Multiplicity для каждого элемента End ассоциации указывают, что с одним элементом Customer может быть связано несколько элементов Orders, но с каждым элементом Order может быть связан только один элемент Customer. Кроме того, элемент OnDelete указывает, что все объекты Orders, связанные с определенным элементом Customer, которые были загружены в ObjectContext, будут удалены при удалении элемента Customer.

<Association Name="CustomerOrders">
  <End Type="ExampleModel.Customer" Role="Customer" Multiplicity="1" />
  <End Type="ExampleModel.Order" Role="Order" Multiplicity="*">
        <OnDelete Action="Cascade" />
  </End>
</Association>

В следующем примере показан элемент Association, который определяет ассоциацию CustomerOrders, если внешние ключи представлены в типах сущностей Customer и Order. Если внешние ключи представлены, то для управления связью между сущностями используется элемент ReferentialConstraint. Для сопоставления этой ассоциации с источником данных элемент AssociationSetMapping не требуется.

<Association Name="CustomerOrders">
  <End Type="ExampleModel.Customer" Role="Customer" Multiplicity="1" />
  <End Type="ExampleModel.Order" Role="Order" Multiplicity="*">
         <OnDelete Action="Cascade" />
  </End>
  <ReferentialConstraint>
       <Principal Role="Customer">
           <PropertyRef Name="Id" />
       </Principal>
       <Dependent Role="Order">
            <PropertyRef Name="CustomerId" />
        </Dependent>
  </ReferentialConstraint>
</Association>

См. также

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

Общие сведения о платформе Entity Framework
Спецификация языка CSDL
Элемент Schema (CSDL)

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

Спецификации языка CSDL, SSDL и MSL
ADO.NET Entity Data Model Tools
association type (Entity Data Model)