Linq To Entity Framework, выбирая целые таблицы - PullRequest
0 голосов
/ 04 марта 2009

У меня есть следующее утверждение Linq:

(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 затем фильтрует значения, потому что в итоге я получаю правильные значения.

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

Есть идеи, как мне это исправить?

1 Ответ

4 голосов
/ 04 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...