2016-10-27 1 views
0

Wie können wir eine OData-Abfrage bilden, um auf die Name-Eigenschaft der komplexen Eigenschaft ProductDetails in der Klasse ProductDTO zuzugreifen?Zugriff auf Eigenschaften des komplexen Typs in OData

public class ProductDTO 
{ 
    public int Id { get; set; } 
    public string ProductName { get; set; } 
    public string Description { get; set; } 
    public ProductDetails ProductDetails { get; set; } 
} 

public class ProductDetails 
{ 
    public string Name { get; set; } 
    public string Price { get; set; } 
    public string Discount { get; set; } 
    public string ManufacturedDate { get; set; } 
} 

Diese Abfrage gibt mir Produktbeschreibung:

/Products?$select=ProductDetails 

{ "@ odata.context": "http://localhost:59909/ $ Metadaten # Produkte (Produktbeschreibung)", "Wert": [{ "Produktdetails" : {"Name": "Laptop", "Preis": "100299", "Rabatt": "1000", "ManufactedDate": "12: 01: 2016 09: 30: 875"}}]}

+0

Suchen Sie nach "/ Produkte? $ Expand = ProductDetails ($ select = Name)"? –

+0

Ja, aber dies funktioniert nicht, da ProductDetails keine Navigationseigenschaft ist. – Ankit

+0

Sieht aus wie: Sollte mit $ expand arbeiten, aber 'nicht unterstützt' wird von der Implementierung geworfen. Das ist aber ein V3 Ref. http://stackoverflow.com/questions/20137681/web-api-odata-expand-doesn-return-complex-types –

Antwort

1

Dies ist laut this post nicht möglich für ein $ select. Es ist jedoch nicht klar, was Sie von Ihrer Frage zu erreichen versuchen, also dachte ich, ich würde dies posten, falls es hilft. Für ein einzelnes Objekt können Sie den Wert einer geschachtelten Eigenschaft wie diesem erhalten. Hier ist ein Beispiel mit dem TripPin-Beispiel OData-Service: http://services.odata.org/V4/TripPinServiceRW/Airports('KLAX')/Location/Address/$value Hier ist die Location-Eigenschaft ein komplexer Typ und wir erhalten nur den Wert der Address-Eigenschaft auf dieses Objekt.

Verwandte Themen