テーブル全体を選択するLinq To 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が値をフィルタリングしていると推測しています。
問題は、3つのテーブルすべてからすべての行をプルダウンしているため、WAY WAYに時間がかかりすぎることです。
それを修正する方法はありますか?
解決
.AsEnumerable()sをクエリから削除すると、クエリ全体がサーバー上で評価されなくなります。
所属していません StackOverflow