Estou enfrentando o seguinte problema ao tentar utilizar o endpoint get que retorna o artista pelo nome:
Identifiquei em outros tópicos no forúm, outros alunos com esse mesmo problema, e com algumas soluções propostas, principalmente em relação a não utilização do LazyLoading, algo que eu não queria ter que fazer, por não saber se vamos utilizá-lo mais adiante no curso.
Ao invés de seguir com essa abordagem, encontrei uma outra possível solução, que seria passar o objeto recebido para um outro objeto, forçando uma materialização dele, evitando que os proxys sejam retornados. Segue meu código:
using ScreenSound.Banco;
using ScreenSound.Modelos;
using System.Text.Json.Serialization;
var builder = WebApplication.CreateBuilder(args);
builder.Services.Configure<Microsoft.AspNetCore.Http.Json.JsonOptions>(options => options.SerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles);
var app = builder.Build();
app.MapGet("/", () => "API do projeto ScreenSound está rondando!");
app.MapGet("/Artistas", () =>
{
var DAL = new DAL<Artista>(new ScreenSoundContext());
return Results.Ok(DAL.Listar());
});
app.MapGet("/Artistas/{nome}", (string nome) =>
{
var DAL = new DAL<Artista>(new ScreenSoundContext());
var artista = DAL.RecuperarPor(a => a.Nome.ToUpper().Equals(nome.ToUpper()));
if (artista is null) return Results.NotFound();
var artistaLimpo = new Artista(artista.Nome, artista.Bio)
{
Id = artista.Id,
};
return Results.Ok(artistaLimpo);
});
app.Run();
Queria saber se essa é uma boa abordagem, ou se existe alguma problemática envolvendo ela.