Comment puis-je utiliser. « Inclure » sur une opération de service pour ADO.NET Data Services

StackOverflow https://stackoverflow.com/questions/494337

Question

J'utilise ADO.NET Data Services et ai une opération de service qui se termine par retourner les résultats de certaines LINQ aux déclarations des entités. Dans le cadre de ces déclarations Linq il y a un .include ( « NavProp ») pour inclure un sous-objet. Lors de l'exécution de cette opération de service, il ne semble pas revenir, qui a élargi Inclure. Est-ce que quelqu'un sait pourquoi ce soit est ou comment résoudre ce problème? Est-il possible d'ajouter un mot-clé dans l'appel à l'opération de service pour développer ce sous-objet? (J'ai essayé $ expand = Subobject mais cela ne semble pas fonctionner - mauvaise demande).

Je voudrais finir avec soit: 1.) la syntaxe d'une instruction LINQ dans une opération de service qui retourne le .include aussi (je suis assez sûr que cela est impossible)

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)

ou

2.) Syntaxe de la requête d'opération de service pour développer le sous-objet

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

La solution

On dirait que ce n'est pas possible à l'heure actuelle (.net 3.5 SP1). Opérations de service ne retourneront soit les types primative ou entités. Tout autre type y compris les types personnalisés ou entités étendues ne peuvent être retournés d'une opération de service. Pour faire face à cela, il faut simplement retourner l'élément (s) de l'opération de service, puis si un include / développer est nécessaire sur le côté client, il faut appeler « LoadProperty » pour l'extension de l'objet désiré (note: cela signifie une autre base de données atteint par appel LoadProperty).

Autres conseils

Après avoir envoyé par courrier électronique MS sur cette question, la solution est d'utiliser l'option pour l'extension de requête sur le uri de l'opération de service. Par exemple,

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

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

Hope this helps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top