Entity Framework Core延迟加载的方法怎么使用
导读:本文共2037.5字符,通常情况下阅读需要7分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 众所周知在EF 6 及以前的版本中,是支持懒加载(Lazy Loading)的,可惜在EF Core 并不支持,必须使用Include方法来支持导航属性的数据加载。不过现在EF Core的开发团队打算恢复对这一功能的支持(目前还未发布,不过可以在Github上面下载进行测试)。懒加载懒加载也可以叫做按需加载、延迟加载。可以分两方面来理解,一方面指暂时不需要该数据... ...
目录
(为您整理了一些要点),点击可以直达。众所周知在EF 6 及以前的版本中,是支持懒加载(Lazy Loading)的,可惜在EF Core 并不支持,必须使用Include
方法来支持导航属性的数据加载。不过现在EF Core的开发团队打算恢复对这一功能的支持(目前还未发布,不过可以在Github上面下载进行测试)。
懒加载也可以叫做按需加载、延迟加载。可以分两方面来理解,一方面指暂时不需要该数据,不用在当前马上加载,而可以推迟到使用它时再加载;另一方面指不确定是否将会需要该数据,所以暂时请不要加载,待确定需要后再加载它。懒加载是一种很重要的数据访问特性,可以有效地减少与数据源的交互(注意,这里所提的交互不是指交互次数,而是指交互的数据量),从而提升程序性能。
我们先来看一看在EF 6中的懒加载的使用方式。
实体定义:
我们在这里定义订单、订单明细实体,它们是一对多关系,通过OrderId
字段进行关联。
在查询订单号为 10253 的订单后,如果我们需要访问订单的明细,不需要再编写一次数据查询的代码,直接访问导航属性即可,EF会自动帮我们填充属性的值。
懒加载需要注意以下两点:
在配置中启用了懒加载(默认开启);
实体类不能是封闭(sealed
)类,导航属性必须是虚(virtual
)属性。
目前EF Core发布的最新版本中并不支持懒加载,开发人员必须使用Include
方法,才能完成导航属性的加载。
大家需要在Github上面下载最新的源代码来测试这一功能aspnet/EntityFrameworkCore。
启用懒加载:
要在通常的应用程序中使用,只需在DbContext
的OnConfiguring
方法中添加对UseLazyLoadingProxies()
扩展方法调用即可。
框架目前是通过Castle.Core
框架来生成代理类来实现对导航属性的延迟加载,开发团队打算将该功能做为EF Core的可选安装包。
Entity Framework Core延迟加载的方法怎么使用的详细内容,希望对您有所帮助,信息来源于网络。