NavigationProperty elements define non-structural properties on entities that allow for navigation from one Entity to another via a relationship. Standard properties describe a value that is associated with an entity, while navigation properties describe a navigation path over a relationship. For example, given a relationship between Customer and Order entities, an Order EntityType (section 2.1.2) can describe a NavigationProperty"OrderedBy" that represents the Customer instance associated with that particular Order instance.
The following is an example of a NavigationProperty element.
<NavigationProperty Name="Orders" Relationship="Model1.CustomerOrder" FromRole="Customer" ToRole="Order" />
The following rules apply to the NavigationProperty element:
NavigationProperty MUST have a Name defined.
NavigationProperty MUST have a Relationship attribute defined.
NavigationProperty MUST have a ToRole attribute defined. ToRole specifies the other end of the relationship and refers to one of the role names that is defined on the Association.
NavigationProperty MUST have a FromRole defined. FromRole is used to establish the starting point for the navigation and refers to one of the role names that is defined on the Association.
NavigationProperty can contain any number of AnnotationAttribute attributes. The full names of the AnnotationAttribute attributes cannot collide.
NavigationProperty can contain a maximum of one Documentation element.
NavigationProperty can contain any number of AnnotationElement elements.
In CSDL 3.0, NavigationProperty can have a ContainsTarget defined. When ContainsTarget is absent, it defaults to "false". When it is set to "true", ContainsTarget indicates containment NavigationProperty (section 2.1.39).
In CSDL 3.0, NavigationProperty can contain any number of ValueAnnotation elements.
Child elements of NavigationProperty are to appear in this sequence: Documentation, AnnotationElement.
All child elements are to appear in the order indicated.