在EF的模型类中,如果配置了导航属性,那么在通过导航属性去获取数据库中的数据时,这种操作就是延迟加载,EF默认延迟加载是开启的状态,所以不用去配置。延迟加载的优点是可以不用把数据一次性全部取出,可以随用随取,但是如果连接关闭后,就在获取不到数据。缺点是如果数据使用的比较频繁,那么每次通过延迟加载获取数据都要访问数据库,无形之中增加了数据库的负担,所以要酌情使用。另外,需要注意的是,如果是在一个连接中读取数据,不能在循环中使用延迟加载,因为EF默认是不允许同时使用两个DataReader,如果一定要使用,需要进行相应的配置,或者是其他的实现方式。
一次性加载是通过“include实现”,可以将关联表的数据一次性全部获取,这样如果连接关闭也不影响后续查询操作的执行。