優點
只在需要的時候加載數據,不需要預先計劃,避免了各種復雜的外連接、索引、視圖操作帶來的低效率問題
缺陷:多次與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