EF Join連接查詢的坑


最近做項目的時候遇到一個需要級聯查詢的數據,表中又沒有定義相關的外鍵約束,所以限定了咱們只能使用Join方式的關聯而不是Include的方式關聯,關於Include和Join的詳細用法,本屌就不再此處進行詳細說明了。園子里相關的文章有很多,大家請自行去查看!

廢話不多說,直接上代碼:

 

說明:1.ef的Join級聯查詢生成的語句是Inner Join 的方式,所以此處生成的腳本語句應該類似下面的形式:

select * from TableNameA A

 Inner Join TableNameB B 

where ...相關條件...

 

2.圖一中的標紅的1表示關聯的表 也就是TableNameB的名字   2表示級聯的數據集

3.通過檢測數據庫可以發現生成的腳本如下:

備注:紅色圓圈內的標記  說明我們的猜測是正確的。

 

 

大家再來看看這種情況的查詢:

 

 說明:圖一和圖二的不同點就在紅色標記2

 我們再次監測數據庫生成的腳本:

說明:我們發現生成的腳本並不和我們所想象的一樣,而是先查詢除關聯表的數據再取出符合條件的。這樣就比較耗時了。

 

 

z總結:經過多方資料的查詢發現:原來使用Join關聯的時候,關聯字段值的名字需要一樣才會使用Inner的級聯方式查詢,如果不一樣的話,會使用類似第二種的這種查詢方式進行查詢。

自己遇到的坑,在此處進行記錄下,防止下次繼續踩坑。  備注:這個還是有其他的解決方案的,詳情這個大神的文章《http://www.cnblogs.com/dudu/archive/2011/04/04/entity_framework_map_inner_join.html#commentform》

 

寫在最后:本屌才疏學淺,要是有寫的不妥的地方,還望各位大蝦們勿噴!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM