¿Por qué mi respuesta oData no tiene propiedades de navegación?

Si observa la siguiente fuente de datos oData, verá las propiedades de navegación incluidas para los elementos "secundarios" para indicarle qué URL debe seguir:

http://services.odata.org/OData/OData.svc/Suppliers?$format=json

Por ejemplo, el proveedor 0 tiene una propiedad de navegación para productos. Esto enlaza a una lista de productos para ese proveedor.

http://services.odata.org/OData/OData.svc/Suppliers(0)/Products?$format=json

Estoy tratando de hacer lo mismo conODataConventionModelBuilder yEntitySetController<Product> para que cuando pidaoData/Product(0) Me mostrará las 'características' del producto:

Creo mi modelo así (basado enEjemplo GetImplicitEdmModel)

     // odata
     ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
     modelBuilder.EntitySet<RRStoreDB.Models.Product>("Product");
     modelBuilder.EntitySet<RRStoreDB.Models.ProductFeature>("ProductFeature");

     Microsoft.Data.Edm.IEdmModel model = modelBuilder.GetEdmModel();
     config.Routes.MapODataRoute("ODataRoute", "odata", model);

Creo un controlador para WebAPI:

public class  ProductController : EntitySetController<Product, int>
{
    RRStoreDBContext _db = new RRStoreDBContext();


    [Queryable]
    public override IQueryable<DProduct> Get()
    {
        return _db.Products.AsQueryable();
    }

    public ICollection<ProductFeature> GetProductFeatures(int key)
    {
        Product product = _db.Products.FirstOrDefault(p => p.ProductId == key);
        if (product == null)
        {
            throw new HttpResponseException(HttpStatusCode.NotFound);
        }
        return product.ProductFeatures;
    }
}

Cuando llamo a la URL de la propiedad de mi hijo, funciona y me da la lista correcta de funciones:

 /oData/Products(18)/ProductFeatures

Sin embargo, habría esperado una propiedad de navegación en/oData/Products(18) apuntando a esto

¿Qué necesito hacer para que esto aparezca?Este artículo Dice que es automático pero no los veo.

ODataConventionModelBuilder, que generalmente se recomienda sobre ODataModelBuilder, inferirá automáticamente las jerarquías de herencia en ausencia de una configuración explícita. Luego, una vez que se infiere la jerarquía, también se inferirán propiedades y propiedades de navegación. Esto le permite escribir menos código, centrándose en dónde se desvía de nuestras convenciones.

Respuestas a la pregunta(1)

Su respuesta a la pregunta