2009-03-04 7 views
0

je la déclaration LINQ suivante:LINQ to Entity Framework sélection des tables entières

(from order in Orders.AsEnumerable() 
join component in Components.AsEnumerable() 
    on order.ORDER_ID equals component.ORDER_ID 
join detail in Detailss.AsEnumerable() 
    on component.RESULT_ID equals detail.RESULT_ID 
where orderRestrict.ORDER_MNEMONIC == "MyOrderText" 
select new 
      { 
       Mnemonic = detail.TEST_MNEMONIC, 
       OrderID = component.ORDER_ID, 
       SeqNumber = component.SEQ_NUM 
      }).ToList() 

je me attends à ce mettre la requête suivante:

select * 
from Orders ord (NoLock) 
     join Component comp (NoLock) 
      on ord .ORDER_ID = comp.ORDER_ID 
     join Details detail (NoLock) 
      on comp.RESULT_TEST_NUM = detail .RESULT_TEST_NUM 
where res.ORDER_MNEMONIC = 'MyOrderText' 

mais je reçois 3 requêtes séparées qui permettent de sélectionner toutes les lignes des tables. Je devine que Linq filtre alors les valeurs parce que j'obtiens les bonnes valeurs à la fin.

Le problème est que cela prend trop de chemin parce qu'il arrache toutes les lignes des trois tables.

Des idées comment je peux résoudre ce problème?

Répondre

4

Supprimez les .AsEnumerable() de la requête car ils empêchent l'évaluation de la requête entière sur le serveur.

+0

Vous ROCK !!! Merci beaucoup pour cette réponse. Je dois faire une démo demain et je voulais l'utiliser dans la démo. Maintenant je serai capable de !! Encore merci! – Vaccano

Questions connexes