3
respostas

Gravando Produto mais de uma vez ao executar projeto

Boa Noite, tenho a seguinte dúvida, de acordo com o código cada vez que executamos o projeto ele lê os dados do arquivo json e grava na tabela produtos, existe uma forma de verificarmos se já existem os dados do arquivo gravados na tabela, para evitar duplicação dos produtos?

3 respostas

Olá, André Carlos

Sim, porém essa verificação se o produto está cadastrado na tabela é feito já é feita pelo programa:

Arquivo: DataService.cs

public void InicializaDB()
{
    contexto.Database.Migrate();

    List<Livro> livros = GetLivros();

    produtoRepository.SaveProdutos(livros);
}

private static List<Livro> GetLivros()
{
    var json = File.ReadAllText("livros.json");
    var livros = JsonConvert.DeserializeObject<List<Livro>>(json);
    return livros;
}

Arquivo: ProductRepository.cs

public void SaveProdutos(List<Livro> livros)
{
    foreach (var livro in livros)
    {
        if (!dbSet.Where(p => p.Codigo == livro.Codigo).Any())
        {
            dbSet.Add(new Produto(livro.Codigo, livro.Nome, livro.Preco));
        }
    }
    contexto.SaveChanges();
}

Note que a condição if (!dbSet.Where(p => p.Codigo == livro.Codigo).Any()) impede a inserção do mesmo produto se ele já existir.

Minha preocupação agora é você ter mencionado a duplicação de o dados. Os produtos estão sendo duplicados na sua aplicação?

Olá Marcelo, no momento que mencionei isto ainda não havia chegado na aula que realizamos a verificação se o produto já existia na tabela, agora está Ok.

Muito obrigado

Excelente, André Carlos! Obrigado por participar do fórum. Qualquer dúvida, estamos aí.