Domanda

Sto usando ADO.NET Data Services e ho un Service Operation che finisce per restituire i risultati di alcuni LINQ alle entità dichiarazioni. Come parte di tali affermazioni Linq c'è un .include ( "NavProp") per includere un sub-oggetto. Quando si esegue questa operazione di servizio non sembra di tornare che si è espansa Includi. Qualcuno sa né perché questo è o come risolvere questo? E 'possibile aggiungere una parola chiave nella chiamata per l'operazione del servizio per espandere la sub-oggetto? (Ho provato a $ expand = sotto-oggetto, ma questo non sembra funzionare - bad richiesta).

mi piacerebbe finire con entrambi: 1.) sintassi per una dichiarazione LINQ in un'operazione di servizio che restituisce il .include anche (io sono abbastanza sicuro che questo non è possibile)

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)

o

2.) Sintassi per la richiesta di operazione di servizio per espandere il sotto-oggetto

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

Soluzione

Sembra che questo non è possibile allo stato attuale (.net 3.5 SP1). Service Operations torneranno solo entrambi i tipi primative o entità. Qualsiasi altro tipo tra cui i tipi personalizzati o entità espanso non può essere restituito da un'operazione di servizio. Per far fronte a questo uno deve solo restituire l'articolo (s) dal funzionamento del servizio e quindi se un include / espansione è necessario sul lato client si deve chiamare "LoadProperty" per l'ampliamento dell'oggetto desiderato (nota: questo significa un altro database colpire per LoadProperty chiamata).

Altri suggerimenti

Dopo aver inviato via email MS su questo tema, la soluzione è quella di utilizzare l'opzione ampliare query l'URI del funzionamento del servizio. Ad esempio,

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

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

Spero che questo aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top