2009-03-04 4 views
0

У меня есть следующий Linq заявление:Linq To Entity Framework выбрать целые таблицы

(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() 

Я ожидаю, что это потушить следующий запрос:

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' 

, но вместо этого я получаю 3 отдельно запросов, которые выбирают все строки из таблиц. Я предполагаю, что Linq затем фильтрует значения, потому что в конце концов получаю правильные значения.

Проблема заключается в том, что она слишком медленная, потому что она сбрасывает все строки из всех трех таблиц.

Любые идеи, как я могу это исправить?

ответ

4

Удалить запрос .AsEnumerable() из запроса, поскольку это предотвращает оценку всего запроса на сервере.

+0

ВЫ РОК !!! Большое вам спасибо за этот ответ. Завтра я должен сделать демо, и я хотел использовать это в демо. Теперь я смогу! Еще раз спасибо! – Vaccano

Смежные вопросы