懒加载(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,在有多对多关系的时候要尽量避免懒加载,因为会常常伴随不必要的数据加载,占用内存。