Inquiridor
Query complexa ad.net entity framework

Pergunta
-
Galera, sou usuario do nhibernate/hibernate e la faço muitas queries complexas, com exists, subqueries, etc...
Como fazer isso na versão do ado.net entity?
como seria as querys abaixo(apenas como exemplo)?
1)
select pedido.* from pedidos as pedido
inner join produtos as prod
on prod.id = pedido .produtoId
where prod.nome = @nome
or pedido .valor > @valor
no hibernate seria:
select pedido from pedidos pedido
inner join pedido.produtos as prod
where prod.nome = @nome
or pedido .valor > @valor
2)
select pedido.* from pedidos as pedido
where exists (
select prod .* produtos as prod
where prod.Id = pedido.produtoId
)
no hibernate seria:
select pedido from pedidos pedido
where exists (
select prod produtos prod
inner join prod.pedidos pedido
where prod.pedido = pedido
)
Antonio Kuroki
Todas as Respostas
-
Antônio,
Desculpe a demora para a resposta, mas vamos lá:
no c# ficaria mais ou menos assim:
select pedido.* from pedidos as pedido
inner join produtos as prod
on prod.id = pedido .produtoId
where prod.nome = @nome
or pedido .valor > @valorstring nomeProduto = "";
double valorPedido = 102.00;
var
pedidosFeitos = from ped in pedidos
join pro in produtos on ped.Produto.ID equals pro.ID
where pro.Nome == nomeProduto
&& ped.Total > valorPedido
select ped
2) Para esta segue o código também:
select pedido from pedidos pedido
where exists (
select prod produtos prod
inner join prod.pedidos pedido
where prod.pedido = pedidoSuponha que vocês já tenha a listas preenchida, ficaria assim:
var pedidosExistente = pedidos.Where(p => p.Pedido.ID = codigoPedido).ToList()
if(pedidos.Count > 0){
}
ou ainda;
if(pedidos.Any(p => p.Pedido.ID = codigoPedido)){
}
Espero ter ajudado.
-
Antonio.
1)
select pedido.* from pedidos as pedido
inner join produtos as prod
on prod.id = pedido .produtoId
where prod.nome = @nome
or pedido .valor > @valorEntity Framework
List<pedido> pedidos = (from tPed in entidade.pedidos join tProd in entidade.produtos on tPed.produtoId equals tProd.id where tProd.nome == @nome || tPed.valor > @valor select tPed).ToList();
2)
select pedido.* from pedidos as pedido
where exists (
select prod .* produtos as prod
where prod.Id = pedido.produtoIdEntity FrameWork
List<pedido> pedido = (from tPed in entidade.pedidos where (from tProd in entidade.produtos where tProd.Id == tPed.produtoId select tProd ).Contains(tPed.produtos) select tPed).ToList();
Obs: a palavra "entidade" é o nome de sua conexão do modelo de relacionamento do Entity Framework.
tProd = Você também pode compara direto valore ex: tProd.Id).Contains(tPed.produtoId)Espero ter ajudado, caso a resposta tenha solucionado seu problema, favor marcar como resposta, obrigado.
-
-