Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ozzyvegeta

Pq o linq cria varios selects ao invez de um?

Recommended Posts

Ola,

 

Estou com um problema de performace com o linq...

 

vejam se esse meu problema é pq eu fiz algo errado OU pq o linq faz isso mesmo.;.

 

tenho duas tabelas...

 

uma de Pedido e outra de Usuario, exemplo classico.!

as tabelas se referenciam por FORENKEY!

 

Bom, acontece que o resultado esta como o esperado, mais vejam minha duvida...

 

Eis a query:

 

Pedido MeuPedido = (from pedido in MeuDataContext where pedido.idPedido = idPedido select pedido).Single();

essa query me tras o pedido que desejo E POPULA a propriedade UsuarioPedido (tipo USUARIO) do meu objeto PEDIDO.

 

Bom, até ai tranquilo, o problema que reporto, esta no LOQ do datacontext.

 

ele primeiro pesquisa meu pedido na tabela de pedido

 

SELECT [t0].idPedido, [t0].DataPedido, [t0].idUsuario, ...  FROM [banco].[tbPedido] AS [t0]
WHERE [t0].[idPedido] = @p0
-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [1]

 

depois ele busca meu usuário

 

SELECT [t0].idUsuario, [t0].Nome, [t0].Senha, ...  FROM [banco].[tbUsuario] AS [t0]
WHERE [t0].[idUsuario] = @p0
-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [1]

 

bom, eu penso que isso é um ERRO grave de performance...

imagine se eu tenho 1000 pedidos numa pesquisa??

 

A questão é:

 

Não seria mais facil ele criar uma UNICA query e nessa query usar INNER JOIN, OU LEFT JOIN???

 

e se isso existe, como que faço??

 

é alguma configuração no DataContext?

 

Agradeço a todos!!

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola,

 

Estou com um problema de performace com o linq...

 

vejam se esse meu problema é pq eu fiz algo errado OU pq o linq faz isso mesmo.;.

 

tenho duas tabelas...

 

uma de Pedido e outra de Usuario, exemplo classico.!

as tabelas se referenciam por FORENKEY!

 

Bom, acontece que o resultado esta como o esperado, mais vejam minha duvida...

 

Eis a query:

 

Pedido MeuPedido = (from pedido in MeuDataContext where pedido.idPedido = idPedido select pedido).Single();

essa query me tras o pedido que desejo E POPULA a propriedade UsuarioPedido (tipo USUARIO) do meu objeto PEDIDO.

 

Bom, até ai tranquilo, o problema que reporto, esta no LOQ do datacontext.

 

ele primeiro pesquisa meu pedido na tabela de pedido

 

SELECT [t0].idPedido, [t0].DataPedido, [t0].idUsuario, ...  FROM [banco].[tbPedido] AS [t0]
WHERE [t0].[idPedido] = @p0
-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [1]

 

depois ele busca meu usuário

 

SELECT [t0].idUsuario, [t0].Nome, [t0].Senha, ...  FROM [banco].[tbUsuario] AS [t0]
WHERE [t0].[idUsuario] = @p0
-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [1]

 

bom, eu penso que isso é um ERRO grave de performance...

imagine se eu tenho 1000 pedidos numa pesquisa??

 

A questão é:

 

Não seria mais facil ele criar uma UNICA query e nessa query usar INNER JOIN, OU LEFT JOIN???

 

e se isso existe, como que faço??

 

é alguma configuração no DataContext?

 

Agradeço a todos!!

 

Obrigado

Então, tem como fazer join sim...

 

http://www.hookedonlinq.com/JoinOperator.ashx

 

Agora não sei se é bem o que você está procurando.

 

Espero ter ajudado.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.