1
resposta

[Sugestão] System.NullReferenceException: 'Object reference not set to an instance of an object.'

Eu estava tendo esse problema: Imagem do problema onde mostra System.NullReferenceException: 'Object reference not set to an instance of an object.'E para resolver eu coloquei um .Include(m => m.Artista); para incluir os Artistas na hora de ler o que tinha em Musicas, desse jeito:

Imagem mostrando como ficou a função usando a solução do problema

E editei todos os registros para não ter registro NULL, informando um Id existente da tabela Artistas.

1 resposta

Oi, Gabriel! Como vai?

Sua iniciativa de usar o .Include(m => m.Artista) para carregar os dados relacionados e ajustar os registros com valores válidos chama atenção. Isso mostra atenção à integridade dos dados e entendimento do funcionamento do Entity Framework.

Uma dica interessante para o futuro é usar o método ThenInclude quando precisar carregar relações encadeadas.Veja este exemplo:

var musicas = context.Musicas
    .Include(m => m.Artista)
    .ThenInclude(a => a.Produtora)
    .ToList();

Esse código carrega as músicas, seus artistas e também as produtoras relacionadas. Assim, evita null em propriedades encadeadas.

Ícone de sugestão

Para saber mais:

Quando usamos Include e ThenInclude, estamos trabalhando com o conceito de eager loading no Entity Framework. Ele carrega os dados relacionados no momento da consulta, reduzindo o número de chamadas ao banco. Alternativamente, existe o lazy loading, que carrega os dados sob demanda. Para usar lazy loading, as propriedades de navegação precisam ser virtual e o recurso deve estar habilitado no contexto.

public virtual Artista Artista { get; set; }

Essa abordagem pode ser útil quando você não precisa de todos os dados relacionados de imediato.

Alura

Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!