Elemento NavigationProperty (CSDL)
Un elemento NavigationProperty definisce una proprietà di navigazione, che fornisce un riferimento all'altra entità finale di un'associazione.A differenza delle proprietà definite con l'elemento Property, le proprietà di navigazione non definiscono la forma e le caratteristiche dei dati.Forniscono un modo per navigare in un'associazione tra due tipi di entità.
Si noti che le proprietà di navigazione sono facoltative in entrambi tipi di entità nelle entità finali di un'associazione.Se si definisce una proprietà di navigazione su un tipo di entità nell'entità finale di un'associazione, non è necessario definire una proprietà di navigazione sul tipo di entità nell'altra entità finale dell'associazione.
Il tipo di dati restituito da una proprietà di navigazione è determinato dalla molteplicità della relativa entità finale di associazione remota.Si supponga ad esempio che esista una proprietà di navigazione, OrdersNavProp, in un tipo di entità Customer e che tale proprietà navighi in un'associazione uno-a-molti tra Customer e Order.Poiché l'entità finale di associazione remota per la proprietà di navigazione dispone della molteplicità molti (*), il relativo tipo di dati è una raccolta (di Order).Analogamente, se esiste una proprietà di navigazione CustomerNavProp nel tipo di entità Order, il relativo tipo di dati sarebbe Customer poiché la molteplicità dell'entità finale remota è uno (1).
Un elemento NavigationProperty può includere i seguenti elementi figlio (nell'ordine elencato):
Documentation (zero o un elemento)
Elementi Annotation (zero o più elementi)
Attributi applicabili
Nella tabella riportata di seguito vengono descritti gli attributi che è possibile applicare all'elemento NavigationProperty.
Nome attributo |
È obbligatorio |
Valore |
---|---|---|
Name |
Sì |
Nome della proprietà di navigazione. |
Relationship |
Sì |
Nome di un'associazione che è all'interno dell'ambito del modello. |
ToRole |
Sì |
Entità finale dell'associazione in corrispondenza della quale termina la navigazione.Il valore dell'attributo ToRole deve corrispondere al valore di uno degli attributi Role definiti in una delle entità finali dell'associazione (definiti nell'elemento AssociationEnd). |
FromRole |
Sì |
Entità finale dell'associazione dalla quale ha inizio la navigazione.Il valore dell'attributo FromRole deve corrispondere al valore di uno degli attributi Role definiti in una delle entità finali dell'associazione (definiti nell'elemento AssociationEnd). |
Nota
È possibile applicare un qualsiasi numero di attributi di annotazione (attributi XML personalizzati) all'elemento NavigationProperty.Tuttavia, gli attributi personalizzati non possono appartenere ad alcuno spazio dei nomi XML riservato a CSDL.I nomi completi per due attributi personalizzati qualsiasi non possono essere uguali.
Esempio
Nell'esempio seguente viene definito un tipo di entità (Book) con due proprietà di navigazione (PublishedBy e WrittenBy):
<EntityType Name="Book">
<Key>
<PropertyRef Name="ISBN" />
</Key>
<Property Type="String" Name="ISBN" Nullable="false" />
<Property Type="String" Name="Title" Nullable="false" />
<Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
<NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
FromRole="Book" ToRole="Publisher" />
<NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
FromRole="Book" ToRole="Author" />
</EntityType>
Vedere anche
Concetti
Panoramica su Entity Framework