3
respostas

O Metodo ThenInclude nao esta de acordo ao do exemplo da aula

Ola estou tentando reproduzir o codigo da aula " Como realizar joins entre entidades relacionadas" mas o metodo ThenInclude que seria para dercer um nivel nao esta funcionando. trecho onde esta comentado.

using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using System; using System.Linq; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking;

public class ProgramQueries { static void Main() {

using (var contexto2 = new LojaContext()) {

var promocoes = contexto2.Promocoes .Include( p => p.Produtos) .ThenInclude(pp => pp. ) // o x não é uma propriedade ele esta como um lista então não consigo acessar o Produto .FirstOrDefault();

Console.WriteLine("\n Mostrando produtos da Promoção Janeiro");

foreach (PromocaoProduto promocao in promocoes.Produtos) { Console.WriteLine(promocao.produto); } } } }

3 respostas

Olá Carlos, Poderia exibir o Model de Produtos

segue o model de Produto

using 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; internal set; } public IList Promocoes { get; set; } public IList Compras { get; set; }

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

Fala, Carlos, você está querendo que sua query faça um join entre Promocao e PromocaoProduto, certo? Se possível coloca aqui seu modelo de promoção e a classe de join também (PromocaoProduto).

Reparei no código da sua classe Produto que a lista de promoções e compras não está parametrizada para os tipos corretos.

Você colocou assim:

public IList Promocoes { get; set; }
public IList Compras { get; set; }

Mas deveria estar assim:

public IList<Promocao> Promocoes { get; set; }
public IList<Compra> Compras { get; set; }

Aguardo sua resposta pra gente continuar a solução da sua dúvida!