2
respostas

Erro ao pesquisar por Artista: NotSupportedException: The deserialization constructor for type 'Castle.Proxies.ArtistaProxy' contains parameters with null names.

Olá, testei o código do amigo David Lucas e ocorreu o que o "Estudante" disse: "você pode perder informações caso o objeto tenha relações aninhadas". O resultado da pesquisa não trouxe as musicas do artista. Gostaria de saber como fazer a dica do Estudante: desabilitar o Lazy Loading apenas para essa consulta específica.

2 respostas

Olá Carlos! Tudo certo?

Para desabilitar o Lazy Loading apenas para essa consulta específica, você pode usar o método Include do Entity Framework para carregar explicitamente as propriedades de navegação desejadas.

Aqui está um exemplo de como você pode modificar sua consulta para incluir as músicas do artista:

app.MapGet("/Artistas/{nome}", (string nome) =>
{
    var context = new ScreenSoundContext();
    var artista = context.Artistas
                        .Include(a => a.Musicas) // Inclui as músicas associadas ao artista
                        .FirstOrDefault(a => a.Nome.ToUpper().Equals(nome.ToUpper()));
    
    if (artista is null)
    {
        return Results.NotFound();
    }
    return Results.Ok(artista);
});

Neste exemplo, o método Include(a => a.Musicas) é usado para garantir que as músicas associadas ao artista sejam carregadas junto com o artista, evitando o uso do Lazy Loading para esta consulta específica.

Espero que esta abordagem ajude a resolver o problema e bons estudos!

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

Isso ocorre porque a classe Artistas não tem um construtor padrão sem argumentos, o entitty utiliza esse construtor para fazer lazy loading, basta apenas adicionar isso no inicio da classe artista : public Artista() { }