none
WCF Ria Services - Retornar uma única entidade RRS feed

  • Pergunta

  • O método que tenho no DomainService para retornar uma única entidade de planta é o seguinte:
    public BlueOnTracking.Web.Models.Planta GetPlantaById(int PlantaId)
            {
                return this.ObjectContext.Plantas.Single(l => l.id_planta == PlantaId);
            }
    O meu problema está como receber esse retorno no lado do cliente.
    Já tentei vários formas mas não consigo encontrar solução.
    Um exemplo que vi na net:
    LoadOperation l = _Context.Load(_Context.GetPlantaByIdQuery(Int32.Parse(plantaEscolhida)), true);
        l.Completed += (s,e) =>
        {
            plantaSeleccionada = l.Entities.FirstOrDefault()
        }
    Mas na linha l.Entities não encontro o método FirstOrDefault.
    Estou a usar o SL5 com a actualização dos Ria Services para o SP2.
    Obrigado,
    Afonso Gomes
    quarta-feira, 8 de junho de 2011 14:18

Respostas

Todas as Respostas

  • Afonso,

    Adicione o using System.Linq; na sua classe :).


    Atenciosamente, Paulo R. Pereira de Souza
    http://paulosouza.net
    E-mail: paulorpereirasouza@hotmail.com. twitter facebook linkedin
    • Marcado como Resposta Afonso Gomes quinta-feira, 9 de junho de 2011 15:52
    quinta-feira, 9 de junho de 2011 15:12
  • Obrigado pela resposta.

    Entretanto surgiu-me outra situação: Como posso fazer o programa esperar que faça o LoadOperation antes de continuar a executar o resto do código?

    Obrigado,

    Afonso Gomes

    quinta-feira, 9 de junho de 2011 16:02
  • Afonso, abaixo um exemplo

     

    bool isNotCompleted = true;

    LoadOperation l = _Context.Load(_Context.GetPlantaByIdQuery(Int32.Parse(plantaEscolhida)), true);
    l.Completed += (s,e) =>
    {     plantaSeleccionada = l.Entities.FirstOrDefault();isNotCompleted = false;

    } while(isNotCompleted) Thread.Sleep(TimeSpan.FromSeconds(0.5));


    Atenciosamente, Paulo R. Pereira de Souza
    http://paulosouza.net
    E-mail: paulorpereirasouza@hotmail.com. twitter facebook linkedin

    quinta-feira, 9 de junho de 2011 16:25
  • Comigo isso não funcionou. Estive a procurar e encontrei a solução:

    _PlantaEscolhidaContext.Load(_PlantaEscolhidaContext.GetPlantaByIdQuery(Int32.Parse(plantaEscolhida)), 
    
                    lo =>
    
                    {
    
                        if (!lo.HasError)
    
                        {
    
                            plantaSeleccionada = (Planta)lo.Entities.Single();
    
                        }
    
                    }, null);
    quarta-feira, 6 de julho de 2011 15:25