懶加載(Lazy Loading)的概念在最后部分,前面就不占用篇幅了,進入正題。避免懶加載的主要原因是偏好手加載各個導(dǎo)航屬性(Navigation Property)。
在EF4中懶加載是默認關(guān)閉的,在EF6中懶加載默認開啟,用Student和Enrollment類舉例,要關(guān)閉懶加載的方法有三種:

方法一:關(guān)閉特定的外鍵屬性,將Enrollment類聲明稱public ICollection<Enrollment> Enrollment {get;set;}
方法二:關(guān)閉所有屬性的懶加載,在DbContext中聲明this.Configuration.LazyLoading = false; 如圖

什么是懶加載(Lazy Loading)?
懶加載(Lazy Loading)跟貪婪加載(Eager Loading)是兩種不同在ORM中加載數(shù)據(jù)的方式,通常用于one-to-one, one-to-many, many-to-many的情況下。拿Student和StudentDetail一對一關(guān)系的兩個類舉例,使用懶加載時,加載Student的不會同時會獲取StudentDetail表中的數(shù)據(jù),只有訪問StudentDetail的屬性的時候才會獲取StudentDetail中的數(shù)據(jù);使用貪婪加載的時候,在加載Student的時候就會加載所對應(yīng)的StudentDetail,在有多對多關(guān)系的時候要盡量避免懶加載,因為會常常伴隨不必要的數(shù)據(jù)加載,占用內(nèi)存。