Olá amigo(a)s Fiz tudo exatamente igual ao da aula mas não deu resultado. Segui a dica do Fabiano Augusto Teodoro, troquei o tipo do preco na classe Compra na tabela pra money o que refletiu a troca na tabela Produtos tb pra money em PrecoUnitario na classe pra decimal, depois de tudo a mesma situação o filtro só traz um produto e não uma lista. Outro detlhe é que baixei o projeto final e deu na mesma situação.
Log de saída:
Executed DbCommand (5ms) [Parameters=[], CommandType='Text', CommandTimeout='30' ] SELECT TOP(1) [c].[Id], [c].[Nome], [e].[ClienteId], [e].[Bairro], [e].[Cidade], [e].[Complemento], [e].[Logradouro], [e].[Numero] FROM [Clientes] AS [c] LEFT JOIN [Enderecos] AS [e] ON [e].[ClienteId] = [c].[Id]
Endereço de entrega: Rua dos Inválidos
Executed DbCommand (0ms) [Parameters=[], CommandType='Text', CommandTimeout='30' ] SELECT TOP(1) [p].[Id], [p].[Categoria], [p].[Nome], [p].[PrecoUnitario], [p].[U nidade] FROM [Produtos] AS [p] WHERE [p].[Id] = 2
Executed DbCommand (2ms) [Parameters=[@get_Item_0='?'], CommandType='Text', Co mmandTimeout='30'] SELECT [e].[Id], [e].[Preco], [e].[ProdutoId], [e].[Quantidade] FROM [Compras] AS [e] WHERE ([e].[ProdutoId] = @get_Item_0) AND ([e].[Preco] > 10.0)
Mostrando as compras do produto SqlServer Compra de 3 Unidade do produto SqlServer a R$ 59,6700 Pressione qualquer tecla para continuar. . .
Código Program.cs
static void Main(string[] args)
{
using (var contexto = new LojaContext())
{
var serviceProvider = contexto.GetInfrastructure<IServiceProvider>();
var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
loggerFactory.AddProvider(SqlLoggerProvider.Create());
var cliente = contexto
.Clientes
.Include(c => c.EnderecoDeEntrega)
.FirstOrDefault();
Console.WriteLine($"Endereço de entrega: {cliente.EnderecoDeEntrega.Logradouro}");
var produto = contexto
.Produtos
.Where(p => p.Id == 2)
.FirstOrDefault();
contexto.Entry(produto)
.Collection(p => p.Compras)
.Query()
.Where(c => c.Preco > 10)
.Load();
Console.WriteLine($"Mostrando as compras do produto {produto.Nome}");
foreach (var item in produto.Compras)
{
Console.WriteLine("\t" + item);
}
}