Fiz o seguinte código para buscar as compras acima de 3 reais de determinado produto:
static void Main(string[] args)
{
using (var contexto = new LojaContext())
{
LogSql(contexto);
//Compras acima de 3 reais do Produto
var p1 = contexto.Produtos
.Where(p => p.Id == 3002)
.FirstOrDefault();
contexto.Entry(p1)
.Collection(p => p.Compras)
.Query()
.Where(c => c.Preco > 3.0)
.Load();
Console.WriteLine($"Compras do produto {produto.Nome} com condicional");
foreach (var compra in p1.Compras)
{
Console.WriteLine($"{compra.Quantidade} {compra.Produto.Unidade} de {compra.Produto.Nome} no valor de {compra.Preco}");
}
}
}
No log a saída das queries foi:
Executed DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
SELECT TOP(1) [p].[Id], [p].[Categoria], [p].[Nome], [p].[PrecoUnitario], [p].[Unidade]
FROM [Produtos] AS [p]
WHERE [p].[Id] = 3002
Executed DbCommand (5ms) [Parameters=[@__get_Item_0='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30']
SELECT [e].[Id], [e].[Preco], [e].[ProdutoId], [e].[Quantidade]
FROM [Compras] AS [e]
WHERE ([e].[ProdutoId] = @__get_Item_0) AND ([e].[Preco] > 3.0E0)
Compras do produto Pão Francês com condicional
6 Unidade de Pão Francês no valor de 2,4
Porque a compra no valor de 2,4 retornou? (OBS: Só tem essa compra na tabela. Esperava que nada fosse exibido no console com essa condição.)
Obrigado,