1
resposta

Execução sem lista

Quando eu executo o código abaixo não aparece a lista de pães, fica mostrando caminho da aplicação, consegue me ajudar?

 static void Main(string[] args)
        {
            using(var contexto = new LojaContext())
            {
                var cliente = contexto
                    .Clientes
                    .Include(c => c.EnderecoDeEntrega)
                    .FirstOrDefault();

                Console.WriteLine($"Endereço de entrega: {cliente.EnderecoDeEntrega.Logadouro}");

                var produto = contexto
                    .Produtos
                    .Include(p => p.Compras)
                    .Where(p => p.Id == 3002)
                    .FirstOrDefault();



                Console.WriteLine($"Mostrando as compras do produto {produto.Nome}");
                foreach (var item in produto.Compras)
                {
                    Console.WriteLine("\t" + item);
                }
            }

RESULTADO:

Endereço de entrega: Rua dos Inválidos Mostrando as compras do produto Pão Francês Alura.Loja.Testes.ConsoleApp.Compra Pressione qualquer tecla para continuar. . .

De mais códigos:

sing System.Collections.Generic;

namespace Alura.Loja.Testes.ConsoleApp
{
    public class Produto
    {
        public int Id { get; internal set; }
        public string Nome { get; internal set; }
        public string Categoria { get; internal set; }
        public double PrecoUnitario { get; internal set; }
        public string Unidade { get; set; }
        public IList<PromocaoProduto> Promocoes { get; set; }
        public IList<Compra> Compras { get; set; }



        public override string ToString()
        {
            return $"Produto: {this.Id}, {this.Nome}, {this.Categoria}, {this.PrecoUnitario}";
        }
    }
}

namespace Alura.Loja.Testes.ConsoleApp
{
    public class Compra
    {
        public int Id { get; set; }
        public int ProdutoId { get; set; }
        public int Quantidade { get; internal set; }
        public Produto Produto { get; internal set; }
        public double Preco { get; internal set; }
    }
}
1 resposta

Fala Genilson, blz? Pelo que entendi você esta acessando o objeto e imprimindo o mesmo

    foreach (var item in produto.Compras)
    {
          Console.WriteLine("\t" + item);
    }

Perceba, item é um objeto do tipo compra, portanto você consegue acessar as propriedades do objeto ou sobrescrever o método ToString()

      Console.WriteLine("\t" + item.Id);
        \\ item.ProdutoId
        \\etc