懶加載(Lazy Loading)的概念在最后部分,前面就不占用篇幅了,進入正題。避免懶加載的主要原因是偏好手加載各個導航屬性(Navigation Property)。
在EF4中懶加載是默認關閉的,在EF6中懶加載默認開啟,用Student和Enrollment類舉例,要關閉懶加載的方法有三種:
方法一:關閉特定的外鍵屬性,將Enrollment類聲明稱public ICollection<Enrollment> Enrollment {get;set;}
方法二:關閉所有屬性的懶加載,在DbContext中聲明this.Configuration.LazyLoading = false; 如圖
什么是懶加載(Lazy Loading)?
懶加載(Lazy Loading)跟貪婪加載(Eager Loading)是兩種不同在ORM中加載數據的方式,通常用于one-to-one, one-to-many, many-to-many的情況下。拿Student和StudentDetail一對一關系的兩個類舉例,使用懶加載時,加載Student的不會同時會獲取StudentDetail表中的數據,只有訪問StudentDetail的屬性的時候才會獲取StudentDetail中的數據;使用貪婪加載的時候,在加載Student的時候就會加載所對應的StudentDetail,在有多對多關系的時候要盡量避免懶加載,因為會常常伴隨不必要的數據加載,占用內存。