Наборы ассоциаций (модель EDM)
В модели Entity Data Model (EDM) набор AssociationSet представляет собой логический контейнер для ассоциаций одного типа. Аналогично наборы сущностей являются контейнером для сущностей одного типа. Наборы сущностей и ассоциаций, определенные в схемах, сопоставлены с таблицами в базе данных, хранящей данные приложений. Наборы сущностей и ассоциаций — основа классов программной модели объектов, которая будет использоваться в коде приложения.
Обозначение AssociationSet используется по двум причинам.
Чтобы определить элементы ассоциации Association.
Чтобы управлять ассоциациями между экземплярами сущности.
Тип EntityType может использоваться более чем одним набором ассоциаций EntitySet, поэтому наборы ассоциаций необходимы для определения элементов связи.
Ассоциация Association соединяет два или более экземпляров сущности, которые принадлежат двум наборам сущностей, указанным элементом Association. Элемент AssociationSet содержит экземпляры типа Association, если таковые имеются.
Экземпляры типов сущностей логически содержатся и создаются в наборах сущностей и контейнерах сущностей. Аналогично экземпляры ассоциаций создаются в наборах ассоциаций и контейнерах сущностей.
Ассоциации и наборы ассоциаций — абстрактные понятия, так же как сущности и наборы сущностей. Каждая реализация набора AssociationSet является производным типом.
Атрибут Association элемента AssociationSet задает ассоциацию Association в следующем синтаксисе схемы на языке CSDL:
<AssociationSet Name="CustomerOrderSet" Association="CustomerOrderType">
Два элемента EntitySet указаны в свойствах End набора AssociationSet. Имя ассоциации должно быть полным с указанием пространства имен.
<AssociationSet Name="CustomerOrderSet" Association="
MyCompany.LOBSchema.CustomerOrderType">
<End Role="Orders" EntitySet="CustomerSet" />
<End Role="OrderedBy" EntitySet="OrderSet" />
</AssociationSet >
Свойства End набора AssociationSet задают экземпляры EntitySet, соответствующие этим экземплярам EntityType.
В следующем примере показаны декларации двух типов сущностей, двух наборов сущностей, ассоциации и набора ассоциаций:
<?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>
<Property Name="CustomerId" Type="Int32" Nullable="false" />
</Key>
<!-- Other properties -->
</EntityType>
<EntityType Name="Order">
<Key>
<PropertyRef Name="OrderId" />
</Key>
<Property Name="OrderId" Type="Int32" Nullable="false" />
<!-- Other properties -->
</EntityType>
<Association Name="CustomerOrderType">
<End Role="Orders" Type="Namespace.Customer" Multiplicity="1" />
<End Role="OrderedBy" Type=" Namespace.Order" Multiplicity="0..*" />
</Association>
<EntityContainer Name="ContainerType">
<EntitySet Name="CustomerSet" EntityType=" Namespace.Customer" />
<EntitySet Name="OrderSet" EntityType=" MyCompany.LOBSchema.Order" />
<AssociationSet Name="CustomerOrderSet" Association="CustomerOrderType">
<End Role="Orders" EntitySet=" MyCompany.LOBSchema.CustomerSet" />
<End Role="OrderedBy" EntitySet="MyCompany.LOBSchema.OrderSet" />
</AssociationSet>
</EntityContainer>
</Schema>
В этом примере вначале определяются сущности Customer
и Order
типа EntityType. Затем определена ассоциация Association с именем CustomerOrderType
. Наборы сущностей CustomerSet
и OrderSet
объявлены в контейнере EntityContainer. Дополнительные сведения о контейнерах сущностей см. в разделе Контейнеры сущностей (модель EDM).
Элемент AssociationSet определен также в контейнере EntityContainer как набор AssociationSet с именем CustomerOrderSet
типа CustomerOrderType
.
Двумя свойствами End набора CustomerOrderSet
являются типы EntitySet; в данном случае CustomerSet
и OrderSet
. Экземпляры Association находятся в наборе CustomerOrderSet
и соединяют экземпляры Customer
в наборе CustomerSet
с экземплярами Order
в наборе OrderSet
.
См. также
Основные понятия
Элемент Association (модель EDM)
Связи в модели EDM
Типы модели EDM
Наборы сущностей (модель EDM)
Контейнеры сущностей (модель EDM)
Схемы (модель EDM)
Другие ресурсы
Спецификация схем и сопоставлений (платформа Entity Framework)