EF延遲加載LazyLoading

優點

只在需要的時候加載數據,不需要預先計劃,避免了各種復雜的外連接、索引、視圖操作帶來的低效率問題

缺陷:多次與DB交互,性能降低

阻止延遲加載解決方案:
1、ToList(),返回的東西是個內存級的對象,就是說強迫它在這里執行了一次SQL語句,查詢到的東西被放在Web服務器內存里了,這樣可以達到緩存的效果,這就阻止了延遲加載
2、在構造函數等地方寫

ContextOptions.LazyLoadingEnabled = false;

3、去掉屬性里的virtual

使用方式:兩步

第一:在需要延遲加載的屬性前加上virtual ,該屬性的類型可以是任務的集合類型ICOLLOCT<T>或者是0/1..1關聯屬性。
如:

public virtual List<Product> Products { get; set; }

第二:在context構造器中開啟延遲加載功能

ContextOptions.LazyLoadingEnabled = true;
1

現象

會在對象中產生私有字段


1

其他

貪婪加載/顯示加載 http://www.cnblogs.com/wlflovenet/archive/2011/07/29/EFandMvc6.html

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 前言 人生苦多,快來 Kotlin ,快速學習Kotlin! 什么是Kotlin? Kotlin 是種靜態類型編程...
    任半生囂狂閱讀 26,282評論 9 118
  • 一:java概述:1,JDK:Java Development Kit,java的開發和運行環境,java的開發工...
    ZaneInTheSun閱讀 2,690評論 0 11
  • 夜深高墻小矮樓,月朗云稀風依舊。 憑欄遙望一聲恨,知音能得幾回聞。
    淺云淡閱讀 132評論 0 0
  • 中文 在西方國家,人們常常會談到美國的科技占據主導地位。但從亞洲的角度來看,這種說法似乎站不住腳。在亞洲,用手機就...
    西坡師妹閱讀 364評論 0 0