Элемент Association (язык CSDL)
Элемент Association определяет связь между двумя типами сущностей. Ассоциация должна указывать типы сущностей, которые участвуют в связи, и возможное количество типов сущностей на каждом конце связи, которое называется кратностью. Кратность элемента ассоциации может иметь значение «один» (1), «ноль или один» (0..1) или «многие» (*). Эти сведения заданы в двух дочерних элементах End.
К экземплярам типов сущностей в одном элементе ассоциации можно обращаться посредством свойств навигации или внешних ключей, если они предоставлены в типе сущности. Дополнительные сведения см. в разделах Элемент NavigationProperty, Элемент ReferentialConstraint и Определение отношений и управление отношениями (платформа Entity Framework).
В приложении экземпляр ассоциации представляет конкретную ассоциацию между экземплярами типов сущностей. Экземпляры ассоциации логически сгруппированы в набор ассоциаций. Дополнительные сведения см. в разделе Элемент AssociationSet.
Элемент Association может иметь следующие дочерние элементы (в порядке перечисления).
Documentation (ноль или один элемент)
End (ровно 2 элемента)
ReferentialConstraint (ноль или один элемент)
Элементы Annotation (ноль или более элементов)
Применимые атрибуты
В таблице ниже описываются атрибуты, которые можно применить к элементу Association.
Имя атрибута | Необходимо | Значение |
---|---|---|
Name |
Да |
Имя ассоциации. |
Примечание |
---|
К элементу 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)