none
Melhor maneira de retornar um objeto através de Linq to Sql RRS feed

  • Pergunta

  • Boa tarde pessoal, tenho um objeto Produto, gostaria de fazer um select na tabela Produto usando Linq To Sql, preenchendo diretamente meu objeto.

    Como fazer isso?

    Valeu pessoal.


    Adriano Santoza
    quarta-feira, 9 de março de 2011 21:52

Respostas

Todas as Respostas

  • Adriano,

    Seria algo como isto:

    var result = from p in contexto.Produto
           select new Produto() { codigo = p.Codigo, nome = p.Nome };
    

    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    quinta-feira, 10 de março de 2011 12:26
    Moderador
  • André, 

    fiz conforme você falou, porém, da um erro de compilação, dizendo que eu não posso converter um tipo IQuerable para meu objeto Produto.

    você pode me ajudar?

    obrigado.


    Adriano Santoza
    quinta-feira, 10 de março de 2011 22:54
  • se você quer retornoar apenas um objeto você pode usar o método Single na sua consulta, segue exemplo

    Produto p = contexto.Produto.Single(c => c.Id.Equals(2));
    
    aonde 2 está represetando o ID do produto


    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Se for útil marque como resposta e faça um Developer feliz :)
    • Sugerido como Resposta RodolphoSa terça-feira, 15 de março de 2011 11:00
    sexta-feira, 11 de março de 2011 12:19
    Moderador
  • Boa noite Olavo, o problema não é em selecionar apenas um registro,  o problema é na hora de converter ele para o meu objeto.

    Eu consegui preencher uma lista da seguinte maneira:

    IList<Produto> produto = new List<Produto>();
    
          using (Contexto db = new Contexto())
          {
            produto = db.Tab_Produto.Select(c => new Produto() { id = c.id, nome = c.Nome}).ToList();
          }

    Mas para preencher um objeto Produto eu não consigo.

     

    Att. 

     


    Adriano Santoza
    sábado, 12 de março de 2011 21:54
  • Adriano,

    A ideia seria a mesma, só que utilizando o Single (ou First, Last, o que quer que seja, mas, retornando somente uma entidade e não uma coleção) como o Olavo sugeriu... Você poderia postar como ficou o seu código que resultou na mensagem de erro postada anteriormente?


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    domingo, 13 de março de 2011 13:50
    Moderador
  • Adriano, como o André disse, você poderia colocar todo o seu método aqui para que possamos analisar ?
    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Se for útil marque como resposta e faça um Developer feliz :)
    terça-feira, 15 de março de 2011 16:24
    Moderador
  • Bom dia Olavo, eu fiz conforme você me disse.

    using (Contexto db = new Contexto())
    {
      Entidade.Produto produto = db.Model.Produto.Single(c => c.Id.Equals(p_ID));
    }

    O problema é que não consigo converter o Model.Produto (que é uma tabela do meu DataContext) para um Entidade.Produto (que é um objeto que eu criei com os mesmo atributos da tabela).

    Valeu pessoal.


    Adriano Santoza
    quarta-feira, 16 de março de 2011 13:49
  • Adriano,

    Tente algo como:

    using (Contexto db = new Contexto())
    {
      var produto = (from p in db.Model.Produto
             where (p.Id == p_ID)
             select new Entidade.Produto() 
             {
               Id = p.Id,
               Nome = p.Nome
             }).First();
    }
    

    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    • Marcado como Resposta Adriano Santoza quarta-feira, 16 de março de 2011 22:41
    quarta-feira, 16 de março de 2011 14:40
    Moderador
  • Perfeito Andre,

    Muito obrigado.


    Adriano Santoza
    quarta-feira, 16 de março de 2011 22:41