1

Closed

Sample route doesn't support delete $link for collection navigation property

description

WCF Data client will send request to collection navigation property with following uri:

DELETE /Order(1)/$links/Order_Details(2)

if user call:
ctx.DeleteLink(order, "Order_Details", orderDetail);

However, it won't work in sample's route:

// Metadata routes to support $metadata and code generation in the WCF Data Service client.
        configuration.Routes.MapHttpRoute(ODataRouteNames.Metadata, "$metadata", new { Controller = "ODataMetadata", Action = "GetMetadata" });
        configuration.Routes.MapHttpRoute(ODataRouteNames.ServiceDocument, string.Empty, new { Controller = "ODataMetadata", Action = "GetServiceDocument" });

        // Relationship routes (notice the parameters is {type}Id not id, this avoids colliding with GetById(id)).
        configuration.Routes.MapHttpRoute(ODataRouteNames.PropertyNavigation, "{controller}({parentId})/{navigationProperty}");

        // Route for manipulating links.
        //configuration.Routes.MapHttpRoute(ODataRouteNames.Link, "{controller}({id})/$links/Products");
        configuration.Routes.MapHttpRoute(ODataRouteNames.Link, "{controller}({id})/$links/{navigationProperty}");

        // Routes for urls both producing and handling urls like ~/Product(1), ~/Products() and ~/Products
        configuration.Routes.MapHttpRoute(ODataRouteNames.GetById, "{controller}({id})");
        configuration.Routes.MapHttpRoute(ODataRouteNames.DefaultWithParentheses, "{controller}()");
        configuration.Routes.MapHttpRoute(ODataRouteNames.Default, "{controller}");
Closed Jan 18 at 9:47 PM by hongyes
Verified

comments

HongmeiG wrote Oct 18, 2012 at 9:28 PM

Moving it out to post Build.

HongmeiG wrote Jan 2 at 5:01 PM

Youssef have already add the Path Handler and odata path conventions to address this issue. So this is fixed.