Olá,
Estou tendo dificuldade em recuperar uma informação na View.
Criei uma view que tem como modelo uma lista de produto, na definição da classe produto, existe uma propriedade do tipo Categoria.
Preciso recuperar a categoria do produto em questão. No banco de dados as informações são salvas aparentemente corretas, existe o produto e a categoria, assim como a ligação (Id) entre eles.
Tentei criar uma ViewModel e alimentar manualmente a informação mas também não deu certo.
O erro que ocorre é de NullReference, debugando realmente percebi que a informação de Categoria ao buscar os produtos pelo DbSet vem como null, não entendi o motivo.
Erro: NullReferenceException: Object reference not set to an instance of an object. AspNetCore.ViewsPedido_BuscaDeProdutos_cshtml+d__9.MoveNext() in BuscaDeProdutos.cshtml + var testeNomeCategoria = produto.Categoria.Nome;
<!-- BuscaDeProduto.cshtml -->
@model List<Produto>
@{
foreach (var produto in Model)
{
var testeNomeCategoria = produto.Categoria.Nome;
}
}
...
//Controller
public IActionResult BuscaDeProdutos()
{
return View(produtoRepository.GetProdutos());
}
...
// modelo
public class Categoria : BaseModel
{
public int Id { get; set; }
public string Nome { get; set; }
}
public class Produto : BaseModel
{
...
[Required]
public Categoria Categoria { get; private set; }
...
public Produto(string codigo, string nome, decimal preco, Categoria categoria)
{
...
this.Categoria = categoria;
}
}
// ApplicationContext.cs
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
...
modelBuilder.Entity<Categoria>().HasKey(t => t.Id);
modelBuilder.Entity<Produto>().HasKey(t => t.Id);
modelBuilder.Entity<Produto>().HasOne(t => t.Categoria);
...
}