Dlaczego moja odpowiedź oData nie ma właściwości nawigacyjnych

Jeśli spojrzysz na następujący przykładowy plik danych oData, zobaczysz dołączone właściwości nawigacji dla elementów „podrzędnych”, aby określić, który adres URL ma być następujący:

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

Na przykład dostawca 0 ma właściwość nawigacji do produktów. To prowadzi do listy produktów dla tego dostawcy.

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

Próbuję zrobić to samoODataConventionModelBuilder iEntitySetController<Product> więc kiedy o to poproszęoData/Product(0) pokaże mi „funkcje” produktu:

Tworzę taki model jak ten (na podstawiePróbka 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);

Tworzę kontroler dla 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;
    }
}

Kiedy faktycznie wywołuję adres URL mojej własności podrzędnej, działa i daje mi prawidłową listę funkcji:

 /oData/Products(18)/ProductFeatures

Spodziewałbym się jednak, że obiekt nawigacyjny będzie w/oData/Products(18) wskazując na to.

Co muszę zrobić, aby to się pojawiło.Ten artykuł mówi, że jest automatyczny, ale ich nie widzę:

ODataConventionModelBuilder, który jest ogólnie zalecany w ODataModelBuilder, automatycznie wywnioskuje hierarchie dziedziczenia przy braku wyraźnej konfiguracji. Wtedy, gdy hierarchia zostanie wywnioskowana, również wywnioskuje właściwości i właściwości nawigacyjne. Pozwala to napisać mniej kodu, koncentrując się na tym, gdzie odbiegasz od naszych konwencji.

questionAnswers(1)

yourAnswerToTheQuestion