Linq Для Entity Framework выбор целых таблиц
-
03-07-2019 - |
Вопрос
У меня есть следующее утверждение 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 затем фильтрует значения, потому что в конце я получаю правильные значения.
Проблема в том, что это занимает слишком много времени, потому что при этом удаляются все строки из всех трех таблиц.
Есть какие-нибудь идеи, как я могу это исправить?
Решение
Удалите .AsEnumerable() из запроса, поскольку они препятствуют вычислению всего запроса на сервере.
Не связан с StackOverflow