Navigationseigenschaft (Entity Data Model)
Eine Navigationseigenschaft ist eine optionale Eigenschaft für einen Entitätstyp, die die Navigation von einem Ende einer Zuordnung zum anderen Ende ermöglicht. Im Gegensatz zu anderen Eigenschaften enthalten Navigationseigenschaften keine Daten.
Die Definition einer Navigationseigenschaft enthält Folgendes:
Einen Namen. (erforderlich)
Die Zuordnung, in der sie navigiert. (erforderlich)
Die Enden der Zuordnung, in der sie navigiert. (erforderlich)
Beachten Sie, dass Navigationseigenschaften für beide Entitätstypen an den Enden einer Zuordnung optional sind. Wenn Sie für einen Entitätstyp am Ende einer Zuordnung eine Navigationseigenschaft definieren, muss keine Navigationseigenschaft für den Entitätstyp am anderen Ende der Zuordnung definiert werden.
Der Datentyp einer Navigationseigenschaft wird von der Multiplizität des Remotezuordnungsendes bestimmt. Angenommen, eine Navigationseigenschaft, OrdersNavProp, ist für einen Customer-Entitätstyp vorhanden und navigiert eine 1:n-Zuordnung zwischen Customer und Order. Da das Remotezuordnungsende für die Navigationseigenschaft eine Multiplizität von n (*) aufweist, ist sein Datentyp eine Auflistung (von Order). Ist eine Navigationseigenschaft, CustomerNavProp, für den Order-Entitätstyp vorhanden, wäre sein Datentyp dementsprechend Customer, da die Multiplizität des Remoteendes "eins" (1) beträgt.
Beispiel
Die unten stehende Abbildung zeigt ein konzeptionelles Modell mit drei Entitätstypen: Book, Publisher und Author. Die Navigationseigenschaften Publisher und Authors werden für den Book-Entitätstyp definiert. Die Navigationseigenschaft Books wird sowohl für den Publisher-Entitätstyp als auch den Author-Entitätstyp definiert.
Das ADO.NET Entity Framework verwendet eine domänenspezifische Sprache (DSL) mit der Bezeichnung konzeptionelle Schemadefinitionssprache (CSDL), um konzeptionelle Modelle zu definieren. Die folgende CSDL definiert den in der Abbildung oben gezeigten Book-Entitätstyp:
<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>
Beachten Sie, dass XML-Attribute verwendet werden, um die zum Definieren einer Navigationseigenschaft erforderlichen Informationen zu übermitteln: Das Attribut Name enthält den Namen der Eigenschaft, Relationship enthält den Namen der Zuordnung, in der sie navigiert, und FromRole sowie ToRole enthalten die Enden der Zuordnung.