延迟加载和贪婪加载

贪婪加载:就是把所有要加载的东西一次性读取。通常会将实体对应的导航属性值也一次加载出来,通常在Include的时候会涉及到。

延迟加载:即当我们需要用到的时候才进行加载(读取)。使用延迟加载只需要在属性中加入virtual关键字。延迟加载往往在一些大数据量的查找的时候,会大大提高速度,特别是一对多的关系的时候,如果不适用延迟加载,那么获取某个对象的时候,会将该对象下面的List也统统查找出来,可想而知这样性能会怎么样。

当然我们也可以关闭延迟加载的:

public class CfContext : DbContext
{
public CfContext()
{
this.Configuration.LazyLoadingEnabled = false;
}
}

在定义上下文的时候,可以配置关闭延迟加载。

在开发的时候,程序员应该按照实际情况,来决定使用哪种方式。程序员应该养成一双锐利的眼睛,每写一句代码都能知道是否影响性能,而不是等系统都开发好了,再去发现性能上面的问题。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注