Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Problemas com Session?

Boa noite, não consigo salvar mais de um livro no mesmo pedido. Sempre ao tentar adicionar, é criado um novo pedido mesmo com o SetPedidoId(pedido.id).

Meu código está no Github

3 respostas
solução!

Oi Laís,

Faça os seguintes passos:

Altere a classe: PedidoRepository

De:

            var pedido = _dbSet
                .Where(p => p.Id == pedidoId)
                .SingleOrDefault();

Para:

services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromSeconds(10000);
    options.Cookie.HttpOnly = true;
    options.Cookie.IsEssential = true;
});    

Ao incluir o novo trecho de código não esqueça de incluir na classe o nameespace "using Microsoft.EntityFrameworkCore;"

Após isso re-compile a solução e teste novamente, se o problema ainda persistir inclua também o seguinte trecho de código abaixo:

Classe: Startup

De:

services.AddSession();

Para:

            services.AddSession(options =>
            {
                options.IdleTimeout = TimeSpan.FromSeconds(10000);
                options.Cookie.HttpOnly = true;
                options.Cookie.IsEssential = true;
            });

Espero que isso ajude, eu baixei o seu código e fiz esses dois ajustes e funcionou, eu pedi para que fizesse o primeiro ajuste e testasse primeiro, devido a versão do framework, mas no meu caso tive que executar os dois cenários.

Não esqueça de marcar como resolvido, caso a solução seja essa, isso pode ajudar os demais que tiverem o mesmo problema.

Referência:

https://docs.microsoft.com/pt-br/aspnet/core/fundamentals/app-state?view=aspnetcore-5.0

Oi José,

Eu preciso modificar a variável pedido para o que? Eu modifiquei a classe Startup.cs, mas o problema ainda persiste.

Obrigada!

Oi Laís, boa noite. peço desculpas, houve um pequeno erro de "copy/past".

Altere a classe: PedidoRepository

De:

            var pedido = _dbSet
                .Where(p => p.Id == pedidoId)
                .SingleOrDefault();

Para:

            var pedido = _dbSet
                .Include(p => p.Itens)
                .ThenInclude(p => p.Produto)
                .Where(p => p.Id == pedidoId)
                .SingleOrDefault();