贪婪加载:就是把所有要加载的东西一次性读取。通常会将实体对应的导航属性值也一次加载出来,通常在Include的时候会涉及到。
延迟加载:即当我们需要用到的时候才进行加载(读取)。使用延迟加载只需要在属性中加入virtual关键字。延迟加载往往在一些大数据量的查找的时候,会大大提高速度,特别是一对多的关系的时候,如果不适用延迟加载,那么获取某个对象的时候,会将该对象下面的List也统统查找出来,可想而知这样性能会怎么样。
当然我们也可以关闭延迟加载的:
public class CfContext : DbContext
{
public CfContext()
{
this.Configuration.LazyLoadingEnabled = false;
}
}
在定义上下文的时候,可以配置关闭延迟加载。
在开发的时候,程序员应该按照实际情况,来决定使用哪种方式。程序员应该养成一双锐利的眼睛,每写一句代码都能知道是否影响性能,而不是等系统都开发好了,再去发现性能上面的问题。
Previous: 复杂查找
Next: EF直接执行sql 存储过程