Pergunta

Eu estou usando ADO.Net Data Services e ter uma operação de serviço que acaba de retornar os resultados de algumas linq às demonstrações entidades. Como parte dessas declarações Linq existe uma .INCLUDE ( "NavProp") para incluir uma sub-objecto. Ao executar esta operação serviço ele não aparece para retornar que expandiu Incluir. Alguém sabe por que quer que seja ou como corrigir isso? É possível adicionar uma palavra-chave na chamada para a operação de serviço para expandir essa sub-objeto? (Eu tentei $ expand = Subobject mas que não parecem funcionar - bad pedido)

.

Eu gostaria de acabar com: 1.) sintaxe para uma instrução LINQ em uma operação de serviço que retorna a .include também (eu tenho certeza que isso não é possível)

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.) Sintaxe para a solicitação de operação de serviço para expandir a Subobject

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

Solução

Parece que isso não é possível, neste momento (NET 3.5 SP1). Operações serviço só irá retornar ambos tipos primitivos ou entidades. Qualquer outro tipo incluindo tipos personalizados ou entidades expandidas não podem ser devolvidos a partir de uma operação de serviço. Para lidar com esta deve apenas devolver o item (s) a partir da operação de serviço e, em seguida, se um include / expandir é necessário, por um lado do cliente deve chamar "LoadProperty" para a expansão objeto desejado (nota: isto significa uma outra batida banco de dados por LoadProperty chamada).

Outras dicas

Tendo MS por e-mail sobre esta questão, a solução é usar a expandir consulta opção sobre o URI da operação de serviço. Por exemplo,

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

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

Espero que isso ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top