延遲加載只對關聯屬性(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
缺點:用一次加載一次,提升了數據庫服務器的壓力。
因此,當數據庫的數據越多,咱們用到的數據越少時,推薦使用延遲加載,反之使用預先加載。