こんにちは、複数の内部結合を持つ単純な選択である SQL 内のストアド プロシージャがあります。このストアド プロシージャを LINQ に変換しました。実行すると、メモリ例外が発生するまでメモリ使用量が増加します。私は間違いなくLINQを初めて使用するので、それが私がやっている方法であることを願っています。以下はLINQコードです
編集: 関数に渡される StockRoomID、CustomerID (整数) StartDate、EndDate (日時) 変数
Dim query = (From prds In context.prds
Join prd_colour In context.prd_colours On prd_colour.prd_id Equals prds.prd_id
Join prd_colour_srsp In context.prd_colour_srsps On prd_colour.prd_colour_id Equals prd_colour_srsp.prd_colour_id
Join prd_br In context.prd_brs On prd_br.prd_colour_id Equals prd_colour.prd_colour_id
Join prd_stk_rm In context.prd_stk_rms On prd_stk_rm.prd_br_id Equals prd_br.prd_br_id
Join ct_colour In context.ct_colours On ct_colour.ct_colour_id Equals prd_colour.ct_colour_id
Join ct_pmg In context.ct_pmgs On ct_pmg.ct_pmg_id Equals prds.ct_pmg_id
Join ct_pmg_detail In context.ct_pmg_details On ct_pmg_detail.ct_pmg_id Equals ct_pmg.ct_pmg_id
Join ct_stk_rm In context.ct_stk_rms On ct_stk_rm.ct_br_id Equals ct_pmg_detail.ct_br_id And ct_stk_rm.ct_stk_rm_id Equals prd_stk_rm.ct_stk_rm_id
Join ct_cust_type In context.ct_cust_types On ct_cust_type.ct_cust_type_id Equals ct_pmg_detail.ct_cust_type_id
Join ct_cust_br In context.ct_cust_brs On ct_cust_br.ct_cust_type_id Equals ct_cust_type.ct_cust_type_id
Where prds.prd_invisible_yn = 0 And prds.sell_yn = 1 And prds.ct_apg_id = 3 And ct_stk_rm.ct_stk_rm_id = StockRoomID And _
ct_cust_br.ct_cust_id = CustomerID And prd_colour_srsp.srsp_date_beg <= StartDate And prd_colour_srsp.srsp_date_end >= EndDate Or _
prd_colour_srsp.srsp_date_end Is Nothing And ct_pmg_detail.pmg_date_beg <= StartDate And ct_pmg_detail.pmg_date_end >= EndDate Or _
ct_pmg_detail.pmg_date_end Is Nothing
Select New prd_colour_mix With {.pid = prd_colour.prd_colour_id, .prdcode = prds.prd_sbcode & "-" & ct_colour.ct_colour_code, .prddesc = prds.prd_desc & "-" & ct_colour.ct_colour_desc, .prdLegacyCode = prd_colour.prd_legacy_code}).ToList
このクエリは約 7,000 件のレコードを返します。ストアド プロシージャの実行には約 500 ミリ秒かかります。
ありがとう