擴展查詢我有以下情況:EF每箱
我需要在一個EF上下文中執行以下LINQ查詢
from table1 in context.TableOne
join table2 in context.TableTwo on table1.SomeFKId equals table2.Id
join table3 in context.TableThree on table2.SomeFKId equals table3.Id
...
join tableN in context.TableN on tableN_1.SomeFKId equals tableN.Id
where case1 && case2 && case3 ... && caseN
select new TablesDto { VarOne = table1.Var , VarTwo = tableN_2.var }
我的問題是,我想使用向度的同一查詢senarios有很多延伸。 我寧願不多次寫(DRY原則),只是擴大它,但不以犧牲效率和速度爲代價。
這就是說,如果我想將第一個表與另一個表連接起來,我可以擴展Dto以合併其餘的變量,但是如果我要遍歷行,則需要每行的查詢來擴展它。由於我在談論100到5000行,即使迭代也需要一些時間。
擴展包括:其他情況(case1,case2等)和其他連接。
Extention例子:
from table1 in context.TableOne
join table2 in context.TableTwo on table1.SomeFKId equals table2.Id
join table3 in context.TableThree on table2.SomeFKId equals table3.Id
...
join tableN in context.TableN on tableN_1.SomeFKId equals tableN.Id
join extTable in context.TableExt on table2.SomeFKId equals extTable.Id
where case1 && case2 && case3 ... && caseN || extTable.NumOfSmth == 4
select new ExtTablesDto { VarOne = table1.Var , VarTwo = tableN_2.var , ExtVar = extTable.Name }
這將有助於看到的例子兩種不同的情況。我不明白倒數第二段。我也想知道「其他連接」應該如何參數化。 –
'TablesDto'總是一樣嗎?恐怕你試圖擦自己,所以DRY會受到傷害。 –
不要每次更改dto。但是,DTO是別人 –