3
respostas

Erro ao Listar os Itens do Carrinho

Prezados,

Realizei todos os passos e tudo funcionou perfeitamente até a parte do carrinho. O que está acontecendo, o produto é adicionado, mas se adiciono um novo, ao voltar ao carrinho, não tenho a listagem dos produtos adicionados anteriormente, somente o atual. Verifiquei se um novo pedido não estava sendo criado a cada adição de produto, e está tudo correto, o pedido está sendo recuperado da sessão criada.

Poderiam me ajudar por favor a ver qual é o problema?

Segue meu repositório de estudos: https://github.com/eullercdr/lojadotnetcore-alura

Desde já agradeço.

3 respostas

Oi Euller, tudo bem?

Baixei seu projeto e consegui fazer funcionar, depois de algumas modificações:

No arquivo PedidoRepository.cs, adicione estas linhas:

        public Pedido GetPedido()
        {
            var pedidoId = GetPedidoId();
            var pedido = dbSet
                .Include(p => p.Itens)                // ADICIONAR ESTA LINHA
                    .ThenInclude(i => i.Produto)    // ADICIONAR ESTA LINHA 
                .Where(p => p.Id == pedidoId)
                .SingleOrDefault();

No arquivo da view Carrinho.cshtml, a quantidade está fixa (2). Modifique para utilizar a propriedade Quantidade do modelo:

<input type="text" value="@(item.Quantidade)"

Marcelo, boa tarde, poderia me explicar o que essas duas linhas fazem?

Include(p => p.Itens)        
ThenInclude(i => i.Produto)    

Qual é o objetivo do Include e do ThenInclude?

Desde já agradeço.

Atenciosamente

Oi Euller

Com essas linhas, o Entity Framework Core permite que você use as propriedades de navegação em seu modelo (Pedido.Itens e Item.Produto) para carregar as entidades relacionadas.

Ao que parece, seu código não estava fazendo o carregamento dos vários itens do pedido do cliente, e sim apenas de um único item.