Condividi tramite


Elemento NavigationProperty (EntityType CSDL)

In Entity Data Model (EDM) un elemento NavigationProperty dichiara un collegamento utilizzato dal tipo Association per la navigazione tra le entità correlate.

Se, ad esempio, viene definito un oggetto Association tra un tipo Employee e un altro tipo Employee designato come manager, è possibile specificare una proprietà di navigazione nell'entità Employee per passare dall'oggetto Employee alle dipendenze di un manager al manager o viceversa.

L'estratto seguente del segmento Human Relations dello schema AdventureWorksHRModel definisce l'entità Employee e l'oggetto Association tra le entità Employee che designa alcuni dipendenti come manager. Si noti che l'oggetto Association è tra entità dello stesso tipo ma con attributo Role diverso.

L'elemento Association dichiara un'associazione denominata Employee_Employee_ManagerID. L'unico attributo distintivo delle entità finali Employee di questa associazione è l'attributo Role specificato nella definizione AssociationSet. L'ultimo attributo Role specifica EmployeeManager.

L'attributo Multiplicity degli elementi End nella dichiarazione Association specifica che un elemento Employee può essere il manager di zero o più dipendenti. Un elemento Employee può avere un solo manager, come designato da Role di EmployeeManager.

  <EntityType Name="Employee" Key="EmployeeID">
    <Key>
        <PropertyRef Name="EmployeeID">
    </Key>
    <Property Name="EmployeeID" Type="Int32" Nullable="false" />
    <!-- Other properties omitted for brevity-->

<NavigationProperty Name="Employee1" 
Relationship="Adventureworks.FK_Employee_Employee_ManagerID" 
FromRole="Employee" ToRole="Employee1" />  </EntityType>

<NavigationProperty Name="Employee2" 
Relationship="Adventureworks.FK_Employee_Employee_ManagerID" 
FromRole="Employee1" ToRole="Employee" />

  <EntityContainer Name="HumanResources">

    <EntitySet Name="Employee" EntityType="Adventureworks.Employee" />

    <AssociationSet Name="FK_Employee_Employee_ManagerID"
      Association="Adventureworks.FK_Employee_Employee_ManagerID">
        <End Role="Employee" EntitySet="Employee" />
        <End Role="Employee1" EntitySet="Employee" />
    </AssociationSet>

  </EntityContainer>

L'oggetto NavigationProperty è un collegamento all'entità Employee che è manager dell'entità Employee che contiene NavigationProperty. Quando il modello a oggetti basato su queste specifiche viene compilato, la classe Employee include una proprietà Manager e metodi di supporto utilizzati per la navigazione dell'associazione designata da NavigationProperty. I metodi di supporto vengono compilati automaticamente con il modello a oggetti.

Le proprietà di navigazione possono essere utilizzate per implementare proprietà che funzionano come insiemi nel codice. Per ulteriori informazioni sugli insiemi e sulle proprietà di navigazione, vedere Proprietà di navigazione (EDM).

L'elemento NavigationProperty viene utilizzato solo in CSDL (Conceptual Schema Definition Language). Nei metadati SSDL (Store Schema Definition Language) è presente una controparte che consente di specificare relazioni di chiave primaria/chiave esterna nel database che supportano questa associazione. Nei metadati questa associazione include un vincolo referenziale. Per ulteriori informazioni sull'attributo ReferentialConstraint, vedere Elemento ReferentialConstraint (Association SSDL) e Elemento Association (SSDL).

Vedere anche

Concetti

Relazioni in Entity Data Model
Elemento Association (CSDL)
Attributo Multiplicity (Association CSDL)
Modello completo di AdventureWorks (EDM)
Proprietà di navigazione (EDM)
Elemento Association (SSDL)
Elemento ReferentialConstraint (Association SSDL)