Boa tarde, tudo bem?
como na aula temos o cadastrar, deletar, pensei em fazer o atualizar(editar), e meu teste seria incluir um novo gênero que ficou faltando (teste adicionar o gênero rock),
 Ao realizar a edição tive alguns problemas que estava duplicando ao salvar o novo gênero a musica, para corrigir o duplicar e reparei que só enviava o nome do gênero e não o Id, por falta do id do gênero ao salvar os gêneros antigos, eram inseridos novamente nas tabelas:
Ao realizar a edição tive alguns problemas que estava duplicando ao salvar o novo gênero a musica, para corrigir o duplicar e reparei que só enviava o nome do gênero e não o Id, por falta do id do gênero ao salvar os gêneros antigos, eram inseridos novamente nas tabelas: 
- genero
- generomusica
Mudança no GeneroRequestEdit
// antes:
    public record GeneroRequestEdit(string Nome, string Descricao)
    {
    }
// depois
    public record GeneroRequestEdit(int id, string Nome, string Descricao)
    {
    }
Assim evitei a duplicidade, porem gerou outro erro que não sei resolver: *SqlException: Violation of PRIMARY KEY constraint 'PKGeneroMusica'. Cannot insert duplicate key in object 'dbo.GeneroMusica'. The duplicate key value is (2, 11). The statement has been terminated. *
**Se é update pq ele esta tentando inserir um registro que já existe? Musica do exemplo e erro = 11 - Lady Laura
- Tabela Musicas:   
- Tabela Gêneros:   
- Tabela GeneroMusica  
**esse é meu método put **
            app.MapPut("/Musicas", ([FromServices] DAL<Musica> dal, [FromBody] Musica musica) =>
            {
                var musicaAAtualizar = dal.RecuperarPor(a => a.Id == musica.Id);
                if (musicaAAtualizar is null)
                {
                    return Results.NotFound();
                }
                // atualiza nome
                musicaAAtualizar.Nome = musica.Nome;
                // atualiza ano lancamento
                musicaAAtualizar.AnoLancamento = musica.AnoLancamento;
                // atualiza artista
                musicaAAtualizar.ArtistaId = musica.ArtistaId;
                musicaAAtualizar.Generos = musica.Generos.Select( a=> 
                        new Genero()
                        {
                            Id = a.Id,
                            Nome = a.Nome,
                            Descricao = a.Descricao,
                            Musicas = a.Musicas
                        }
                    ).ToList();
                dal.Atualizar(musicaAAtualizar);
                return Results.Ok();
            });
            #endregion
Na ultima tabela deveria apenas ser add (3, 11) e os outros (2,11),(5,11) apenas atualizar.
até posso fazer em meu put um filtro para manter só o que vier, de alteração, mas penso que o EF deveria saber como tratar um obj que tem listas, e ele mesmo atualizar... remover ou adiconar o que não esta em seu objeto virtual... (relacionado)
 
            