none
Select de algumas colunas e jogar em uma classe. RRS feed

  • Pergunta

  • Pessoal preciso de uma ajuda.

    Tenho uma classe

        public class TipoProduto
        {
            public int? Id { get; set; }
            public string Descricao { get; set; }

               public TipoProduto(int? id, string descricao)
            {
                this.Id = id;
                this.Descricao = descricao;
            }

        }

    No meu select abaixo não consigo instanciar a clase acima.

            public List<TipoProduto> LerTipos() //IList<TipoProduto> LerTipos()
            {       
                using (var conexao = new PI_PIZZAEntities1())
                {
                    List<TipoProduto> lista = (from l in conexao.PI_TIPO
                                               select new TipoProduto { Id = l.ID_GRUPO, Descricao = l.DESCRICAO }).toList();
                    return lista;
                }
            }

    Aparece esse erro

    PRJ_Pizzaria.Model.TipoProduto' não contém um construtor que leva 0 argumentos

    no trecho em negrito e sublinhado é onde o erro aparece.

     
    sábado, 24 de janeiro de 2015 12:30

Respostas

  • Denisson,

    Vc criou um construtor default que espera que tenham sido informados dois argumentos. Uma solução (reutilizando este construtor) é modificar sua consulta LINQ para algo como:

                    List<TipoProduto> lista = (from l in conexao.PI_TIPO
                                               select new TipoProduto (l.ID_GRUPO, Descricao = l.DESCRICAO)).ToList();

    Uma segunda alternativa é criar um construtor sem parâmetros em tipo Produto (a expressão LINQ não seria modificada então):

        public class TipoProduto
        {
            public int? Id { get; set; }
            public string Descricao { get; set; }
    
            public TipoProduto()
            {
            }
    
            public TipoProduto(int? id, string descricao)
            {
                this.Id = id;
                this.Descricao = descricao;
            }
    
        }

    • Sugerido como Resposta Renato GroffeMVP sábado, 24 de janeiro de 2015 12:52
    • Marcado como Resposta DenissonPR sábado, 24 de janeiro de 2015 12:54
    sábado, 24 de janeiro de 2015 12:37
  • obrigado funcionou.
    • Marcado como Resposta DenissonPR terça-feira, 3 de março de 2015 12:59
    sábado, 24 de janeiro de 2015 12:50
  • Denisson,

    Fico contente que tenha dado certo.

    Se puder, marque a resposta para que considerem a discussão como concluída.

    Obrigado!

    • Marcado como Resposta DenissonPR terça-feira, 3 de março de 2015 12:58
    • Não Marcado como Resposta DenissonPR terça-feira, 3 de março de 2015 12:58
    • Marcado como Resposta DenissonPR terça-feira, 3 de março de 2015 13:00
    sábado, 24 de janeiro de 2015 12:53

Todas as Respostas

  • Denisson,

    Vc criou um construtor default que espera que tenham sido informados dois argumentos. Uma solução (reutilizando este construtor) é modificar sua consulta LINQ para algo como:

                    List<TipoProduto> lista = (from l in conexao.PI_TIPO
                                               select new TipoProduto (l.ID_GRUPO, Descricao = l.DESCRICAO)).ToList();

    Uma segunda alternativa é criar um construtor sem parâmetros em tipo Produto (a expressão LINQ não seria modificada então):

        public class TipoProduto
        {
            public int? Id { get; set; }
            public string Descricao { get; set; }
    
            public TipoProduto()
            {
            }
    
            public TipoProduto(int? id, string descricao)
            {
                this.Id = id;
                this.Descricao = descricao;
            }
    
        }

    • Sugerido como Resposta Renato GroffeMVP sábado, 24 de janeiro de 2015 12:52
    • Marcado como Resposta DenissonPR sábado, 24 de janeiro de 2015 12:54
    sábado, 24 de janeiro de 2015 12:37
  • obrigado funcionou.
    • Marcado como Resposta DenissonPR terça-feira, 3 de março de 2015 12:59
    sábado, 24 de janeiro de 2015 12:50
  • Denisson,

    Fico contente que tenha dado certo.

    Se puder, marque a resposta para que considerem a discussão como concluída.

    Obrigado!

    • Marcado como Resposta DenissonPR terça-feira, 3 de março de 2015 12:58
    • Não Marcado como Resposta DenissonPR terça-feira, 3 de março de 2015 12:58
    • Marcado como Resposta DenissonPR terça-feira, 3 de março de 2015 13:00
    sábado, 24 de janeiro de 2015 12:53
  • Denisson,

    Vc criou um construtor default que espera que tenham sido informados dois argumentos. Uma solução (reutilizando este construtor) é modificar sua consulta LINQ para algo como:

                    List<TipoProduto> lista = (from l in conexao.PI_TIPO
                                               select new TipoProduto (l.ID_GRUPO, Descricao = l.DESCRICAO)).ToList();

    Uma segunda alternativa é criar um construtor sem parâmetros em tipo Produto (a expressão LINQ não seria modificada então):

        public class TipoProduto
        {
            public int? Id { get; set; }
            public string Descricao { get; set; }
    
            public TipoProduto()
            {
            }
    
            public TipoProduto(int? id, string descricao)
            {
                this.Id = id;
                this.Descricao = descricao;
            }
    
        }

    Cara obrigado funcionou.
    • Marcado como Resposta DenissonPR terça-feira, 3 de março de 2015 12:56
    • Não Marcado como Resposta DenissonPR terça-feira, 3 de março de 2015 13:00
    sábado, 24 de janeiro de 2015 12:54