Associazione (EDM)
In Entity Data Model (EDM) le relazioni modellano connessioni logiche tra entità. Il modello EDM supporta il tipo AssociationType di relazione che modella la relazione peer-to-peer tra le entità.
In un'associazione ogni entità partecipante è definita End. Ogni elemento End presenta un attributo Role utilizzato per denominare e descrivere la logica di ciascun elemento End dell'associazione.
Gli attributi Type nelle entità finali di un'associazione definiscono i tipi di entità che partecipano alla relazione.
Le associazioni dispongono di un attributo Multiplicity. Tale attributo specifica il numero di istanze di ciascun elemento End che può partecipare alla relazione.
Nella logica di numerose applicazioni line-of-business, i clienti effettuano gli ordini e gli ordini devono essere recapitati ai clienti. La relazione tra un cliente e un ordine può essere modellata da un'associazione EDM. Le entità finali dell'associazione sono le entità cliente e ordine. Ogni elemento End presenta un'entità Type. L'attributo Role descrive la funzione dell'entità specificata dall'attributo Type. Nella maggior parte dei casi, ogni cliente può disporre di zero o più ordini, ma un ordine è associato a esattamente un cliente. In altre parole, l'attributo Multiplicity è pari a 1 per il tipo di cliente e a * per l'ordine. Per ulteriori informazioni sull'attributo Multiplicity, vedere Relazioni in Entity Data Model.
Esempio
Nella sintassi CSDL (Conceptual Schema Definition Language) seguente un elemento Association specifica la logica della relazione tra Customers
e Orders
.
<?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>
<PropertyRef Name="CustomerId" />
</Key>
<Property Name="CustomerId" Type="Guid" Nullable="false" />
<Property Name="Name" Type="String" Nullable="false" />
<Property Name="Address" Type="String" Nullable="false" />
<Property Name="City" Type="String" Nullable="false" />
<NavigationProperty Name="Orders" Relationship="Self.Order_Customer" FromRole="Customers" ToRole="Orders" />
</EntityType>
<EntityType Name="Order">
<Key>
<PropertyRef Name="OrderId" />
</Key>
<Property Name="OrderId" Type="String" Nullable="false" />
<Property Name="TotalAmount" Type="Decimal" />
<Property Name="Tax" Type="Decimal" />
<Property Name="ShippingAddress" Type="String" />
<NavigationProperty Name="Customer" Relationship="Self.Order_Customer" FromRole="Orders" ToRole="Customers" />
</EntityType>
<Association Name="Order_Customer">
<End Role="Customer" Type="OrderInfoModel.Customers"
Multiplicity="1" />
<End Role="Orders" Type="OrderInfoModel.Order" Multiplicity="*" />
</Association>
<EntityContainer Name="LOBSchemaData">
<EntitySet Name="Customers" EntityType="Self.Customer" />
<EntitySet Name="Orders" EntityType="Self.Order" />
<AssociationSet Name="Customers_Orders"
Association="Self.Order_Customer">
<End Role="Customer" EntitySet="Customers" />
<End Role="Order" EntitySet="Orders" />
</AssociationSet>
</EntityContainer>
</Schema>
L'attributo Name di Order_Customer
Association viene utilizzato per identificare la relazione in tutte le operazioni. Ogni entità partecipante è un elemento End. L'attributo Type viene utilizzato per definire il tipo di entità che partecipa a una relazione in tutte le operazioni. Ogni entità partecipante è un elemento End che specifica i tipi di entità che partecipano all'associazione, in questo caso Customers
e Orders
. Ogni elemento End presenta un attributo Role e un attributo Multiplicity.
Funzionalità delle associazioni EDM
Un'associazione ha le caratteristiche seguenti:
Molteplicità: gli elementi End di un'associazione possono essere 0..n, dove la cardinalità di entrambi gli elementi End può variare.
Appartenenza non esclusiva: un tipo di entità può partecipare a più associazioni.
Direzione: le associazioni sono bidirezionali tra le entità e nelle associazioni è possibile eseguire la navigazione a partire da qualsiasi elemento End.
Multiplicity (Molteplicità)
L'attributo Multiplicity definisce la cardinalità degli elementi in tutte le operazioni. Ogni entità partecipante è un elemento End di un oggetto Association. Nell'esempio CSDL precedente viene specificato che è presente esattamente un oggetto Customer (Multiplicty="1")
per zero o più ordini (Multiplicty="*"
).
Nella tabella seguente sono elencati tutti i valori possibili di Multiplicity.
Valore | Descrizione |
---|---|
|
Zero o uno |
|
Esattamente uno |
|
Zero o più |
Non-Exclusive Membership (Appartenenza non esclusiva)
Un tipo di entità può partecipare a più associazioni.
Direction (Direzione)
Le associazioni in EDM sono bidirezionali.