3
respostas

ThenInclude() não é reconhecido pelo Visual Studio 2015

Ao seguir o que foi ensinado no vídeo da Aula 6, vídeo 2:

EntidadesContext contexto = new EntidadesContext();

Venda venda = contexto.Vendas.Include(v => v.ProdutoVenda).ThenInclude(pv=> pv.Produto).FirstOrDefault(v => v.ID == 1);

foreach (var pv in venda.ProdutoVenda) { Console.WriteLine(pv.Produtos.Nome); }

O comando ThenInclude() não é reconhedido.

O que deve ser feito para que seja reconhecido?

3 respostas

Olá Freedy,

ele chega a acusar algum erro na hora de executar o seu programa? Uma coisa que está estranha no código é que na hora de fazer a consulta, no lambda do ThenInclude está assim pv => pv.Produto, como se a propriedade dentro de ProdutoVenda fosse Produto no singular. Só que no foreach que vem na sequência, é chamado pv.Produtos.Nome, como se a propriedade dentro de ProdutoVenda fosse Produtos no plural.

Você estava certo Lucas. Fiz a alteração e rolou bem. Mas antes foi preciso desinstalar o Entity Framework 6.0 que estava conflitando com o 7.0 e acrescentar o using using Microsoft.Data.Entity;

Inclusive, fiz uma alteração para poder exibir a Categoria do produto:

EntidadesContext contexto = new EntidadesContext();

Venda venda = contexto.Vendas.Include(v => v.ProdutoVenda).ThenInclude(pv=> pv.Produtos).ThenInclude(pv=> pv.Categoria).FirstOrDefault(pv => pv.ID == 1);

/ foreach (var pv in venda.ProdutoVenda) { Console.WriteLine(pv.Produtos.Nome); } /

foreach (var pv in venda.ProdutoVenda) { Console.WriteLine(pv.Produtos.Nome + " - " + pv.Produtos.Categoria.Nome + " - " + pv.Produtos.Preco); }

Console.ReadLine();

Está certa essa implementação? Sempre que eu for incluir mais um relacionamento sempre vou usar o ThenInclude()?

Obrigado pela atenção.

Depende um pouco. Você fará o ThenInclude nos casos em que você com certeza precisará trabalhar com o elemento do relacionamento. Por exemplo, se em algum ponto do sistema você somente precisará das informações específicas da Venda (ou seja, não precisará de nada que está em ProdutoVenda), então você nem precisa fazer o ThenInclude(v => v.ProdutoVenda).