Share via


Set di associazioni (EDM)

In Entity Data Model (EDM) un AssociationSet è un contenitore logico per associazioni di un singolo tipo. Analogamente, i set di entità sono contenitori per entità dello stesso tipo. I set di entità e di associazioni definiti in schemi vengono mappati a tabelle nel database in cui sono archiviati i dati per le applicazioni. I set di entità e di associazioni costituiscono l'elemento di base delle classi nel modello a oggetti di programmazione che verrà utilizzato dal codice dell'applicazione.

La designazione AssociationSet viene utilizzata per due motivi:

  • Per definire l'ambito degli endpoint di un elemento Association.

  • Per gestire le associazioni tra istanze dell'entità.

Poiché un oggetto EntityType può essere utilizzato da più di un oggetto EntitySet, i set di associazioni sono necessari per definire l'ambito degli endpoint della relazione.

Un oggetto Association connette due o più istanze dell'entità che appartengono ai due set di entità specificati da Association. AssociationSet contiene le istanze, se presenti, di Association.

I tipi di entità sono contenuti logicamente nei set di entità e nei contenitori di entità e le loro istanze vengono create in questi oggetti. Analogamente, le istanze delle associazioni sono create nei set di associazioni e nei contenitori di associazioni.

Le associazioni e i set di associazioni sono concetti astratti, come le entità e i set di entità. Ogni implementazione di un oggetto AssociationSet è un tipo derivato.

L'attributo Association di un elemento AssociationSet specifica un oggetto Association nella sintassi dello schema CSDL (Conceptual Schema Definition Language) seguente:

<AssociationSet Name="CustomerOrderSet" Association="CustomerOrderType">

Due entità finali di EntitySet sono specificate nelle proprietà End di AssociationSet. L'associazione deve essere indicata in modo completo dal nome dello spazio dei nomi.

<AssociationSet Name="CustomerOrderSet" Association=" 
                        MyCompany.LOBSchema.CustomerOrderType">
    <End Role="Orders" EntitySet="CustomerSet" />
    <End Role="OrderedBy" EntitySet="OrderSet" />
</AssociationSet >

Le proprietà End dell'oggetto AssociationSet specificano le istanze di EntitySet che corrispondono a queste istanze di EntityType.

Nell'esempio seguente vengono illustrate le dichiarazioni di due tipi di entità, due set di entità, un'associazione e un set di associazioni:

<?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>

In questo esempio vengono prima definite le entità Customer e Order****di EntityType. Viene quindi definito l'oggetto Association denominato CustomerOrderType. I set di entità CustomerSet e OrderSet sono dichiarati in EntityContainer. Per ulteriori informazioni sui contenitori di entità, vedere Contenitori di entità (EDM).

L'elemento AssociationSet è definito anche in EntityContainer come oggetto AssociationSet denominato CustomerOrderSet di tipo CustomerOrderType.

Le due proprietà End sono tipi CustomerOrderSet are EntitySet, in questo caso CustomerSet e OrderSet. Le istanze di Association si trovano in CustomerOrderSet e connettono le istanze di Customer in CustomerSet con le istanze di Order in OrderSet.

Vedere anche

Concetti

Associazione (EDM)
Relazioni in Entity Data Model
Tipi EDM (Entity Data Model)
Set di entità (EDM)
Contenitori di entità (EDM)
Schemi (EDM)

Altre risorse

Specifica di schemi e mapping (Entity Framework)