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

Atualização e Deleção no context

Antes de atualizar o context deve passar um dos filmes para uma nova instancia de filme:

Filme filme = _context.Filmes.FirstOrDefault(filme => filme.Id == id);

Perceba o objeto filme esta sem vinculo com o context. depois é só dar o "SaveChanges()" que o context é salvo? porque em nenhum momento que de fato alterei o context em si. Só alterei a nova instancia de filme. ... diferente no metodo de delete:

 _context.Remove(filme);

Aqui sim! eu manipulei o context diretamente e fiz o remove. o Add tambem.. agente manipula o context diretamente.

O Update não deveria ter algo semelhante?

2 respostas
solução!

Boa noite, tudo em paz? Primeiro temos que entender que objetos possuem estados, basicamente pra identificar o que é novidade, o que foi alterado e o que permanece igual - o git também faz isso. Esses estados são frequentemente verificados pela aplicação para que o framework saiba quais operações realizar quando o método SaveChanges for acionado (responsável pelas operações no banco de dados). Outro ponto é que objetos são tipo referência. Então quando vc recebe um objeto do contexto e atribui em uma variável local, vc já está alterando o contexto pq o que o compilador te entrega é o seu endereço e não seus valores, não uma cópia. (Se ficar em dúvida nesse ponto, recomendo ler um artigo da casa mesmo sobre tipo valor e referência). Voltando ao primeiro ponto.. vc alterou um objeto que veio do context, então a aplicação vai marcar esse objeto como modificado. Da próxima vez que o SaveChanges for executado, a aplicação fará uma varredura das operações que foram realizadas na sua API para enviar ao banco de dados e encontrará o seu objeto filme com o estado modificado. Ele então enviará ao banco este objeto como uma operação update, certo? Então por isso não é necessário uma chamada explicita, como o Remove, mas o método existe (sim, ele existe xD) e usá-lo ou não vai depender da sua aplicação e regras de negócio. Recomendo esse artigo aqui (com a permissão da casa), ele ilustra diferentes formas de realizar um update com c#: modifying data with EF Core

Muito bem lembrado. obgd. abçs