1
resposta

Meu código antes rodava direitinho e agora não roda mais!

Conclui ontem a primeira parte do projeto de E-Commerce com ASP.NET CORE MVC e EF e meu código rodava normalmente. Agora, fui começar a parte 2 e quando clicava no botão de adicionar produto (na página Carrossel) o Visual Studio abre automaticamente, com a mensagem: "System.InvalidOperationException: 'Sequence contains more than one element'" e o código que dá erro é esse:

public void AddItem(string codigo)
        {
            var produto = contexto.Set<Produto>()
                            .Where(p => p.Codigo == codigo)
                            .SingleOrDefault();

Alguém sabe a causa desse erro ?

1 resposta

.SingleOrDefault() espera receber apenas um único valor na query.. O pedido deve estar recebendo 2 ou mais valores.

Recomendo usar uma PK exclusiva para os códigos do produto, e de preferência integer por questão de performance. Se for erro humano, recomendo configurar uma trigger ou AUTO INCREMENT para não ficar colocando manualmente um ID para cada item que tiver de adcionar.

E como adendo, um exemplo prático da explicação, se for ID's com o mesmo valor:

produtoID=Doritos queijo nacho
marcaID=Elma Chips

O ID do produto Doritos não irá se repetir porque só existe 1 Doritos de queijo nacho, já a marca irá se repetir com outros salgadinhos da Elma Chips. (Cheetos, Baconzitos, etc)