EF架構~看看下面這代碼,你還敢用它的延時加載嗎?


回到目錄

linq to entity或者linq to sql都提供了非常方便的延時加載功能,什么意思?就是說在建立對象時,它會將數據庫中的表關系同時建立進來,然后在查詢時,如果用到的外鍵表的數據,才會建立這個外鍵表的查詢,這一點確實很“酷”,但是它是有代價的,甚至代價是巨大的。

我一直不太喜歡我命運被別人去掌握着,寫代碼也一樣,說着很好聽的“延時加載”,用着也算方便,但對於它生成的SQL代碼卻是讓我很恐懼的,下面看一下截圖:

這是一個查出10條結果的語句

這只是一部分,它對於建立SQL的connection是10次,傻眼了吧,呵呵,這絕對是不能接受的,但如果你不用外鍵表,它是很正常的,一個SQL鏈接就搞定了,當然這是正常的。

其時,EF把復雜查詢進行了封裝,在它看來叫“延時加載”,對我來說就是關系表的復雜查詢,有時我們應該把它提出來,自己去寫這個LINQ語句,而不用系統所畏的“延時加載”,下面是自己寫的LINQ語句的結果:

恩,自己寫的查詢結果,是我們可以接受的,也是我們可以控制的,呵呵。

回到目錄


免責聲明!

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



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