Pregunta

Estoy usando ADO.NET Data Services y tengo una operación de servicio que acaba de regresar a los resultados de algunas declaraciones LINQ a las entidades. Como parte de dichos estados Linq hay un .include ( "NavProp") para incluir un sub-objeto. Cuando se ejecuta esta operación de servicio que no parece que se expandió volver Incluir. ¿Alguien sabe bien por qué es o cómo solucionarlo? ¿Es posible añadir una palabra clave en la llamada a la operación del servicio para expandir ese sub-objeto? (He intentado expandir $ = subobjeto pero eso no parece funcionar - solicitud incorrecta).

Me gustaría terminar con cualquiera: 1.) sintaxis de una declaración de LINQ en una operación de servicio que devuelve el .include también (estoy bastante seguro de que esto no es posible)

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.) Sintaxis para la solicitud de operación de servicio para expandir el subobjeto

something like: http://localhost/MyDataService/MyDataService.svc/ServiceOp1?param1=234$expand=SubObj (note: this doesn't work)
¿Fue útil?

Solución

Parece que esto no es posible en la actualidad (.NET 3.5 SP1). Operaciones de servicio sólo volverán cualquiera de los tipos o entidades primariedad. Cualquier otro tipo incluidos los tipos personalizados o entidades expandidas no puede ser devuelto de una operación de servicio. Para hacer frente a esto hay que acaba de devolver el artículo (s) de la operación de servicio y luego, si un include / expandir que se necesita en el lado del cliente se debe llamar "LoadProperty" para la expansión objeto deseado (nota: esto significa otra base de datos golpeado por LoadProperty llamada).

Otros consejos

Después de haber enviado por correo electrónico EM sobre esta cuestión, la solución es utilizar la opción de consulta ampliar el URI de la operación de servicio. Por ejemplo,

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

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

Espero que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top