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

[Projeto] Divergência de código

Olá pessoal!

Então, seguinte. Resolvendo o primeiro desafio da aula, onde é necessário construir o DTO da Música, encontrei algumas do meu código com o proposto por vocês. Basicamente, no que foi passado como respostar pelo instrutor ele passa um parâmetro ArtistaId na recorde, o que no meu não tem. Dessa maneira, a fim de deixar o código mais similar, resolvi implementar esse parâmetro também.

Lá na classe com as extensions de música, o meu código fico assim:

app.MapPost("/Tracks", ([FromServices]Dal<Track> dal, [FromBody] TrackRequest trackRequest) =>
{
    Track track = new(trackRequest.name)
    {
        ArtistId = trackRequest.artistId,
        ReleaseYear = trackRequest.releaseYear
    };

    dal.Add(track);
    return Results.Ok();
});

Também adicionei a propriedade ArtistId lá na Model, uma vez que não tinha essa propriedade na minha classe até então. Depois dessas modificações, o método POST até que funcionou, mas quando fui ver se a nova música foi realmente inserida no banco de dados, me foi retornado um erro 500, com a seguinte mensagem de erro: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Olá Hugo! Tudo bem?

O erro indica que há uma tentativa de acessar um valor nulo, o que pode ocorrer por alguns motivos. Aqui estão algumas sugestões para resolver o problema:

  1. Verifique o DTO TrackRequest: Certifique-se de que a propriedade artistId está sendo corretamente preenchida ao enviar o request. Se o artistId não for obrigatório, considere torná-lo opcional.

  2. Validação de Dados: Adicione validações para garantir que todos os campos obrigatórios estão preenchidos antes de tentar inserir no banco de dados. Você pode usar atributos de validação como [Required] no seu DTO.

  3. Banco de Dados: Verifique se a coluna ArtistId na tabela do banco de dados permite valores nulos. Se não permitir, você deve garantir que sempre está passando um valor válido.

Aqui está um exemplo de como você pode adicionar validação no seu DTO:

public class TrackRequest
{
    [Required]
    public string Name { get; set; }
    
    [Required]
    public int ArtistId { get; set; }
    
    public int? ReleaseYear { get; set; }
}

Caso essas sugestões não solucione o seu problema, peço que compartilhe todo o seu projeto para que eu faça testes para identificar o problema. Envie através do GitHub ou Drive do Google.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Fala Armano,

Tentei a primeira sugestão que tu passasse aí, e deu certo. Vlw por responder a pergunta.