Heim  >  Artikel  >  Datenbank  >  EntityFramework延迟加载

EntityFramework延迟加载

WBOY
WBOYOriginal
2016-06-07 16:12:381201Durchsuche

延迟加载:即当我们需要用到的时候才进行加载(读取) 当我们希望浏览某条订单信息的时候,才显示其对应的订单详细记录时,我们希望使用延迟加载来实现,这样不仅加快的了读取的效率,同时也避免加载不需要的数据。延迟加载通常用于foreach循环读取数据时。

延迟加载:即当我们需要用到的时候才进行加载(读取)

当我们希望浏览某条订单信息的时候,才显示其对应的订单详细记录时,我们希望使用延迟加载来实现,这样不仅加快的了读取的效率,同时也避免加载不需要的数据。延迟加载通常用于foreach循环读取数据时。

EF中支持延迟加载,是因为 进行查询,返回DbQuery类

\

为了展示延迟加载,所以 使用 sql server profiler 进行查看 数据的查询。

Sql server profiler 用于监视 sql的连接执行情况。建立一个新的跟踪。

\

当我们使用DbContext类对EF进行操作时候:

\

已经执行完查询了,但是 查询跟踪器里面为空:

\

只有在使用查询结果的时候,EF才会去执行sql语句。

D╧y数据库。其实,就是要想对数据库进行操作 直接 对实体 就行操作就行了。

更符合面向对象的思想了。

直接加载的思想:

1、声明变量

2、要查询的条件

3、根据查询条件 去查询 然后 把结果存放在变量中

用的时候,直接把变量拿过来用

延迟加载的思想:

1、声明变量

2、输入要查询的条件

用的时候,把变量和条件 都拿过来,执行完后 在用

两种思想,分别处理不同的情况。就和 真假分页 是一个道理。

1、如果是在foreach循环中加载数据,那么使用延迟加载会比较好,因为不需要一次性将所有数据读取出来,这样虽然有可能会造成n次数据库的查询,但是基本上在可以接受的范围内。

2、如果在开发时就可以预见需要一次性加载所有的数据,包含关联表的所有数据,那么使用使用贪婪加载是比较好的选择,但是此种方式会导致效率问题,特别是数据量大的情况下。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn