AssociationSet в EF4 - PullRequest
       1

AssociationSet в EF4

1 голос
/ 26 января 2011

Я новичок в EF4, и я не могу что-то понять в файле .edmx,

Может ли кто-нибудь объяснить мне, в чем заключается преимущество AssociationSet, я думаю, что элемент Association представляет все, что связано с таблицами, поэтому зачем мне использовать AssociationSet.

Спасибо

1 Ответ

1 голос
/ 26 января 2011

AssociationSet - это контейнер для ассоциации.

Давайте начнем с простого случая, когда у нас есть типы Контракта и Адреса.Его связь может быть описана в XML как:

<Association Name="FK_Address_Contact">
  <End Role="Contact" Type="SampleModel.Contact" Multiplicity="1">
    <OnDelete Action="Cascade" />
  </End>
  <End Role="Address" Type="SampleModel.Address" Multiplicity="*" />
  <ReferentialConstraint>
    <Principal Role="Contact">
      <PropertyRef Name="ContactID" />
    </Principal>
    <Dependent Role="Address">
      <PropertyRef Name="ContactID" />
    </Dependent>
  </ReferentialConstraint>
</Association>

Как вы можете видеть здесь, один контакт может иметь много адресов.Здесь мы опишем, что существует ссылка между двумя типами.Но как мы можем описать случай, когда в Типе Контракта мы можем иметь фактически два или более адресов.Например, WorkAddress и HomeAddress.В рамках Association мы можем описать только тот факт, что два типа ссылались друг на друга, но в рамках AssociationSet мы также можем описать, что один тип может использовать две равные ссылки на другой тип.

Для такого случая мы можем определить следующее xml:

<EntityContainer Name="ContactsContainer" >
  <EntitySet Name="WorkContacts" EntityType="SampleModel.Contact" />
  <EntitySet Name="HomeContacts" EntityType="SampleModel.Contact" />
  <EntitySet Name="WorkAddresses" EntityType="SampleModel.Address" />
  <EntitySet Name="HomeAddresses" EntityType="SampleModel.Address" />
  <AssociationSet Name="ToWorkAddress" Association="SampleModel.FK_Address_Contact">
    <End Role="Contact" EntitySet="WorkContacts" />
    <End Role="Address" EntitySet="WorkAddresses" />
  </AssociationSet>
  <AssociationSet Name="ToHomeAddress" Association="SampleModel.FK_Address_Contact">
    <End Role="Contact" EntitySet="HomeContacts" />
    <End Role="Address" EntitySet="HomeAddresses" />
  </AssociationSet>
</EntityContainer>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...