Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] 500 internal server error EndPoints Musicas

Fiz o "mão na massa" de endpoints de musica e comparei o código com o do github dizponibilizado no capitulo segunite, aparentemente ta tudo certo mas quando eu dou algum comando no PostMan aparece a seguinte mensagem:

"System.InvalidOperationException: No service for type 'ScreenSound.Banco.DAL`1[ScreenSound.Modelos.Musica]' has been registered. at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) at lambda_method7(Closure, Object, HttpContext) at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddlewareImpl.Invoke(HttpContext context)

HEADERS

Accept: / Connection: keep-alive Host: localhost:7136 User-Agent: PostmanRuntime/7.37.3 Accept-Encoding: gzip, deflate, br Postman-Token: 87946ad7-1e9c-42b3-a8d1-33adc7ebad22 "

codigo para comparação:

app.MapGet("/Musicas", ([FromServices] DAL<Musica> dal) =>
{
    return Results.Ok(dal.Listar());
});

app.MapGet("/Musicas/{nome}", ([FromServices] DAL<Musica> dal,
    string nome) =>
{
    var musica = dal.RecuperarPorNome(a => a.Nome.ToUpper().Equals(nome.ToUpper()));
    if (musica is null)
    {
        return Results.NotFound();
    }
    return Results.Ok(musica);
});

app.MapPost("/Musicas", ([FromServices] DAL<Musica> dal, [FromBody] Musica musica) =>
{
    dal.Adicionar(musica);
    return Results.Ok();
});

app.MapPut("/Musica", ([FromServices] DAL<Musica> dal, [FromBody] Musica musica)=>
{
    var musicaParaAtualizar = dal.RecuperarPor(a=> a.Id == musica.Id);
    if (musicaParaAtualizar is null)
    {
        return Results.NotFound();
    }
    musicaParaAtualizar.Nome = musica.Nome;
    musicaParaAtualizar.AnoLancamento = musica.AnoLancamento;

    dal.Atualizar(musicaParaAtualizar);
    return Results.Ok();
});

app.MapDelete("/Musicas/{Id}", ([FromServices] DAL<Musica> dal, int id) =>
{
    var musicaDeletada = dal.RecuperarPor(a => a.Id == id);
    if(musicaDeletada is null)
    {
        return Results.NotFound();
    }
    dal.Deletar(musicaDeletada);
    return Results.NoContent();
});
1 resposta
solução!

tinha me esquecido do builder.Services.AddTransient<DAL>(); ....