LINQ 전체 테이블을 선택하는 엔티티 프레임 워크
-
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가 결국 올바른 값을 얻기 때문에 LINQ가 값을 필터링하고 있다고 생각합니다.
문제는 세 테이블 모두에서 모든 행을 끌어 내기 때문에 너무 오래 걸린다는 것입니다.
내가 어떻게 고칠 수 있는지 아이디어가 있습니까?
해결책
쿼리에서 .aseNumerable ()을 제거하여 서버에서 전체 쿼리가 평가되는 것을 방지합니다.
제휴하지 않습니다 StackOverflow