OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

odata message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: [OASIS Issue Tracker] (ODATA-674) Specify navigation property binding combined with containment


    [ https://issues.oasis-open.org/browse/ODATA-674?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=64340#comment-64340 ] 

Michael Pizzo commented on ODATA-674:
-------------------------------------

Observations:
Solving the general case of arbitrary paths where there are no back pointers is probably a non-starter; if there is one root from which both source and target paths descend we could put the navpropbinding there, but even that's not necessarily the case; paths could "go backwards" multiple times.

In general, "going backwards" implies that the type understands the context of it's usage.  For example, if I have a complex type for address with a nav prop to state, then going backwards from the complex type would imply I knew the other properties of the object on which the complex type was used.

We could still put the navpropbinding in the entitycontainer, rather than the type, but add support for relative paths from the instance to the target. That way the type wouldn't have to understand its usage.  However, that would require we had a good path to the usage of the type from which the relative path was specified.

> Specify navigation property binding combined with containment
> -------------------------------------------------------------
>
>                 Key: ODATA-674
>                 URL: https://issues.oasis-open.org/browse/ODATA-674
>             Project: OASIS Open Data Protocol (OData) TC
>          Issue Type: Bug
>          Components: Implementing OData, OData CSDL
>    Affects Versions: V4.0_OS
>         Environment: Proposal needed for CSD01
>            Reporter: Ralf Handl
>            Assignee: Michael Pizzo
>              Labels: Gap, request_tc_discussion
>             Fix For: V4.01_WD01
>
>
> This combination is not explicitly covered in the specification.
> There are two sides to this problem: 
> - target entity sets for contained entities
> - contained entity sets as target entity sets
> Both problems can be solved by allowing <NavigationPropertyBinding> elements as children of the structured type that defines the containment navigation property.
> Example 1: navigation property of a contained entity targets a top-level entity set:
>   <NavigationProperty Name="Items" Type="Collection(Model.OrderItem)" ContainsTarget="true" />
>   <NavigationPropertyBinding Path="Items/Product" Target="Model.Container/Products"/>
> Example 2: assume an Order contains Items and Shipments, and an Item refers to a single Shipment of the same Order and vice versa. Using paths that start at the type defining the containment navigation property, the Target would be "Shipments" and "Items".
> <EntityType Name="Order">
>   <NavigationProperty Name="Items" Type="Collection(Model.OrderItem)" ContainsTarget="true" />
>   <NavigationPropertyBinding Path="Items/Shipment" Target="Shipments"/>  
>   <NavigationProperty Name="Shipments" Type="Collection(Model.Shipment)" ContainsTarget="true" />
>   <NavigationPropertyBinding Path="Shipments/ShippedItems" Target="Items"/>
> </EntityType>
> <EntityType Name="OrderItem">
>   <NavigationProperty Name="Shipment" Type="Model.Shipment" Partner="ShippedItems"/>
> </EntityType>
> <EntityType Name="Shipment">
>   <NavigationProperty Name="ShippedItems" Type="Collection(Model.OrderItem)" Partner="Shipment"/>
> </EntityType>



--
This message was sent by Atlassian JIRA
(v6.2.2#6258)


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]