EF的延遲加載LazyLoad

延遲加載只對關聯屬性(Navigation Property)有用,普通屬性沒有這個東西。數據庫

延遲加載是一條一條的讀取屬性,調用一次,讀取一次。服務器

條件:ide

context.Configuration.ProxyCreationEnabled = true;(默認爲true)spa

context.Configuration.LazyLoadingEnabled = true;(默認爲true)io

POCO類爲public,導航屬性要加virtual修飾符。原理

注:POCO---Plain Old CLR Object,指那些不包括INSERT、DEL等數據持久化操做及任何業務邏輯的原始類。數據

原理分析:di

EF動態的生成了實體類的子類,而後override了virtual屬性(因此不加virtual的話就得不到屬性值)vi

優勢:避免一次性加載全部數據,提升了加載的速度。co

缺點:用一次加載一次,提升了數據庫服務器的壓力。

因此,當數據庫的數據越多,咱們用到的數據越少時,推薦使用延遲加載,反之使用預先加載。

相關文章
相關標籤/搜索