最近做項目的時候遇到一個需要級聯查詢的數據,表中又沒有定義相關的外鍵約束,所以限定了咱們只能使用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》
寫在最后:本屌才疏學淺,要是有寫的不妥的地方,還望各位大蝦們勿噴!