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();
});