Wie wird in einem OData 4-Dienst in der Web-API die geschachtelte $ expand von einem .NET-Client aus aufgerufen? Wir verwenden den OData Client Generator . Zurück in den früheren WCF Data Services mit OData 3-Service konnten wir .Expand("Customers/Orders")
aufrufen. In Web-API mit OData 4 können wir dies nicht mehr tun und erhalten Folgendes, wenn Sie versuchen .Expand("Customers/Orders")
:
Die im URI angegebene Abfrage ist nicht gültig. Es wurde ein Pfad gefunden, der mehrere Navigations- & gt; -Eigenschaften durchquert. Bitte formulieren Sie die Abfrage so um, dass jeder Erweiterungsweg nur Typ & gt; -Segmente und Navigationseigenschaften enthält.
Wir können das umgehen, indem wir expand wie folgt aufrufen: .Expand("Customers($expand=Orders)")
. In nicht verschachtelten $ expand-Szenarien mag ich die Lambda-Unterstützung wie in .Expand(d => d.Customers)
. Gibt es im .NET OData 4-Client einen geeigneten Weg, verschachtelte Erweiterungen ohne die unglückliche magische Zeichenfolge .Expand("Customers($expand=Orders)")
aufzurufen? Wenn nicht, gibt es ein saubereres String-Muster wie "Kunden / Bestellungen", das funktionieren würde? Danke.
Die Anforderung, die Sie senden möchten, lautet:
%Vor%richtig?
Gemäß dem OData-Protokoll:
Um verwandte Entitäten gemäß einer bestimmten Beziehung anzufordern, gibt der Client eine GET-Anforderung an die Anforderungs-URL der Quellen -Entität aus, gefolgt von einem Schrägstrich und dem Namen der Navigationseigenschaft, die die Beziehung darstellt .
Eine solche Anfrage wird nicht unterstützt, da die "Kunden" vor "/ Bestellungen" der Name eines Entitätssets anstelle einer einzelnen Entität ist. Sie können nur verschachtelte Erweiterungen schreiben wie:
%Vor%Dies entspricht den folgenden Code-Snippets mit OData V4 Code Generator:
%Vor%Und Sie müssen alle Kunden durchlaufen, um alle ihre Bestellungen zu erhalten.
Tags und Links asp.net-web-api odata wcf-data-services astoria wcf-data-services-client