Frage

Ich verwende ADO.Net Data Services und Service Operation haben, die die Ergebnisse einiger Linq zu Entitäten Aussagen Rückkehr endet. Als Teil dieser Linq Aussagen gibt es eine .INCLUDE ( „NavProp“) ein Teilobjekt aufzunehmen. Wenn diese Dienstoperation ausgeführt scheint es nicht, dass ein erweiterter zurückzukehren einschließen. Weiß jemand, entweder warum das so ist oder wie das Problem beheben? Ist es möglich, ein Schlüsselwort in dem Aufruf des Service-Betrieb hinzuzufügen, dass die Sub-Objekt zu erweitern? (Ich habe versucht, erweitere $ = SUBOBJECT aber das scheint nicht zu funktionieren - schlecht Anfrage).

Ich möchte bis Ende mit entweder: 1.) Syntax für eine Linq-Anweisung in einem Servicebetrieb, die auch die .INCLUDE gibt (ich bin ziemlich sicher, dass dies nicht möglich ist)

something like:
(from c in context.MyObj.Include("SubObj")
select c).ToList()
(this works inside the service operation, but doesn't provide the SubObj on the client side)

oder

2.) Syntax für den Servicebetrieb Anforderung der SUBOBJECT zu erweitern

something like: http://localhost/MyDataService/MyDataService.svc/ServiceOp1?param1=234$expand=SubObj (note: this doesn't work)
War es hilfreich?

Lösung

Es sieht aus wie dies derzeit nicht möglich ist (.net 3.5 SP1). Service Operations wird nur entweder primitive Typen oder Einheiten zurück. Jede andere Art, die benutzerdefinierten Typen oder erweiterten Einheiten kann nicht von einem Service-Betrieb zurückgeführt werden. Um mit diesem umgehen muss nur das Einzelteil zurück (e) aus der Service-Operation und dann, wenn eine Include / erweitert auf der Client-Seite benötigt wird, um einen Anruf muss „LoadProperty“ für die gewünschte Objekt Expansion (Anmerkung: Dies bedeutet, eine andere Datenbank getroffen pro LoadProperty Anruf).

Andere Tipps

MS zu diesem Thema per E-Mail hat, ist die Lösung, um die Abfrage-Option auf dem uri des Service-Betriebes erweitern zu verwenden. Zum Beispiel:

.../<ServiceOperationName>.svc?$expand=<Property1Name>,<Property2Name> ...

Service Operation: GetCustomer
Relationship Property to load: Address
Uri: .../<GetCustomer>.svc?$expand=Address

Hope, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top