Pergunta

Ao usar o cliente ADO.Net Data Services para atualizar uma entidade chamando o LoadProperty:

ctx.BeginLoadProperty(this, "Owner", (IAsyncResult ar) => ...

Ela lança um erro no servidor se a propriedade é null

Erro: exceção lançada: System.Data.Services.DataServiceException: Recurso não encontrado para o segmento 'proprietário'. em System.Data.Services.RequestDescription.GetSingleResultFromEnumerable (SegmentInfo segmentInfo) a System.Data.Services.DataService1.CompareETagAndWriteResponse (RequestDescription descrição, ContentFormat ResponseFormat, IDataService DataService)
em System.Data.Services.DataService1.SerializeResponseBody (RequestDescription Descrição, IDataService DataService) a System.Data.Services.DataService1.HandleNonBatchRequest (RequestDescription descrição) em System.Data.Services.DataService`1.HandleRequest ()

O problema é que o cliente não sabe se a propriedade é null ou apenas ainda não foi preenchido. A propriedade proprietário é um link de um Vehicle a um Customer.

Todas as ideias que há de errado?

Graças

Foi útil?

Solução

Consultando em chaves primárias gerar uma exceção quando a chave não existe. A solução é adicionar uma verdadeira expressão manequim no estado (por exemplo: 1 == 1 && item.Id == XXX).

Sem a expressão manequim o pedido ADO.NET é:

http: //localhost//test.svc/Role(XXX)

Com a condição de manequim, o pedido é:

http: //localhost//test.svc/Role()?$filter=true e (Id eq 1)

O comportamento esperado (null retornado) está correto no segundo caso.

Outras dicas

IgnoreResourceNotFoundException propriedade do contexto de serviço true:

svc.IgnoreResourceNotFoundException = true;

Eu recebi um "recurso não encontrado para o segmento 'Propriedade'" erro também. Mina parece ser que na cláusula where Estou procurando pela chave primária. Eu encontrei alguns recursos que dizem que irá lançar um erro (mesmo quando se usa FirstOrDefault ()) ao usar uma chave primária que não existe (em oposição a outra, onde cláusulas que simplesmente não fornecem resultados). Eu acho que uma coisa semelhante está acontecendo com você.

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