1
resposta

[Dúvida] Erro para cadastrar avaliação de artista

Estou com o seguinte problema:

{ "errorMessage": "The database operation was expected to affect 1 row(s), but actually affected 0 row(s); data may have been modified or deleted since entities were loaded. See https://go.microsoft.com/fwlink/?LinkId=527962 for information on understanding and handling optimistic concurrency exceptions." }

Utilizei controller em meu projeto e uma arquitetura semelhante ao CleanCode, com Fluent Api para mapeamento do banco. Além disso, utilizo MySql no lugar de SQLServer.

Repositório: https://github.com/danibassetto/ScreenMusic

Por favor, se alguém puder olhar as classes.. as propriedades virtuais estão iguais. Não sei o que está fazendo com que o Entity não identifique que precisa criar um novo registro.

1 resposta

Oi, Danielle! Tudo bem?

Isso geralmente acontece quando o estado da entidade no banco de dados é alterado entre o momento em que ela foi carregada e o momento em que a operação de atualização é realizada.

Aqui estão algumas sugestões para tentar resolver o problema:

  1. Verifique o estado da entidade antes de salvar: Certifique-se de que a entidade que você está tentando salvar está no estado correto. Você pode fazer isso verificando o DbContext.Entry(entity).State. Por exemplo:

    var entity = await _context.Artistas.FindAsync(id);
    if (entity == null)
    {
        // Lidar com o caso em que a entidade não foi encontrada
    }
    _context.Entry(entity).State = EntityState.Modified;
    await _context.SaveChangesAsync();
    
  2. Atualize as entidades carregadas: Se você está carregando entidades relacionadas, certifique-se de que todas estão atualizadas. Às vezes, pode ser necessário recarregar a entidade antes de salvar as alterações.

    var entity = await _context.Artistas.FindAsync(id);
    if (entity == null)
    {
        // Lidar com o caso em que a entidade não foi encontrada
    }
    _context.Entry(entity).Reload();
    _context.Entry(entity).State = EntityState.Modified;
    await _context.SaveChangesAsync();
    

Espero que essas dicas ajudem a resolver o problema. Bons estudos!