iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Entity Framework Core延迟加载的方法怎么使用
  • 940
分享到

Entity Framework Core延迟加载的方法怎么使用

2023-06-29 07:06:37 940人浏览 八月长安
摘要

本文小编为大家详细介绍“Entity Framework Core延迟加载的方法怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Entity Framework Core延迟加载的方法怎么使用

本文小编为大家详细介绍“Entity Framework Core延迟加载的方法怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Entity Framework Core延迟加载的方法怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

众所周知在EF 6 及以前的版本中,是支持懒加载(Lazy Loading)的,可惜在EF Core 并不支持,必须使用Include方法来支持导航属性的数据加载。不过现在EF Core的开发团队打算恢复对这一功能的支持(目前还未发布,不过可以在GitHub上面下载进行测试)。

懒加载

懒加载也可以叫做按需加载、延迟加载。可以分两方面来理解,一方面指暂时不需要该数据,不用在当前马上加载,而可以推迟到使用它时再加载;另一方面指不确定是否将会需要该数据,所以暂时请不要加载,待确定需要后再加载它。懒加载是一种很重要的数据访问特性,可以有效地减少与数据源的交互(注意,这里所提的交互不是指交互次数,而是指交互的数据量),从而提升程序性能。

EF 6 懒加载

我们先来看一看在EF 6中的懒加载的使用方式。

实体定义:

    public class Order    {        public int OrderID { get; set; }        public string CustomerID { get; set; }        public DateTime? OrderDate { get; set; }        public virtual ICollection<OrderDetail> OrderDetails { get; set; }    }    public class OrderDetail    {        public int OrderID { get; set; }        public int ProductID { get; set; }        public decimal UnitPrice { get; set; }        public short Quantity { get; set; }        public float Discount { get; set; }        public virtual Order Order { get; set; }    }

我们在这里定义订单、订单明细实体,它们是一对多关系,通过OrderId字段进行关联。

        using (NorthwindContext context = new NorthwindContext()) {            Order order = await context.Orders.SingleAsync(item => item.OrderID == 10253);            Assert.NotNull(order);            Assert.NotNull(order.OrderDetails);            Assert.Equal(3, order.OrderDetails.Count);        }    }

在查询订单号为 10253 的订单后,如果我们需要访问订单的明细,不需要再编写一次数据查询的代码,直接访问导航属性即可,EF会自动帮我们填充属性的值。

懒加载需要注意以下两点:

  • 在配置中启用了懒加载(默认开启);

  • 实体类不能是封闭(sealed)类,导航属性必须是虚(virtual)属性。

在 EF Core 中启用懒加载

目前EF Core发布的最新版本中并不支持懒加载,开发人员必须使用Include方法,才能完成导航属性的加载。

        using (NorthwindContext context = new NorthwindContext()) {            Order order = await context.Orders.Include(e => e.OrderDetails).SingleAsync(item => item.OrderID == 10253);            Assert.NotNull(order);            Assert.NotNull(order.OrderDetails);            Assert.Equal(3, order.OrderDetails.Count);        }

大家需要在github上面下载最新的源代码来测试这一功能 aspnet/EntityFrameworkCore。

启用懒加载:

    public class NorthwindContext : DbContext    {        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)        {            var sqlConnectionStringBuilder = new SqlConnectionStringBuilder {                DataSource = "****",                InitialCatalog = "Northwind",                UserID = "sa",                PassWord = "sa"            };                        optionsBuilder.UseSqlServer(sqlConnectionStringBuilder.ConnectionString);                        optionsBuilder.UseLazyLoadingProxies();                        base.OnConfiguring(optionsBuilder);        }    }

要在通常的应用程序中使用,只需在DbContextOnConfiguring方法中添加对UseLazyLoadingProxies()扩展方法调用即可。

框架目前是通过Castle.Core框架来生成代理类来实现对导航属性的延迟加载,开发团队打算将该功能做为EF Core的可选安装包。

读到这里,这篇“Entity Framework Core延迟加载的方法怎么使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: Entity Framework Core延迟加载的方法怎么使用

本文链接: https://www.lsjlt.com/news/323210.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Entity Framework Core延迟加载的方法怎么使用
    本文小编为大家详细介绍“Entity Framework Core延迟加载的方法怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Entity Framework Core延迟加载的方法怎么使用...
    99+
    2023-06-29
  • Entity Framework Core工具怎么使用
    本文小编为大家详细介绍“Entity Framework Core工具怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Entity Framework Core工具怎么使用”文章能帮助大家解决...
    99+
    2023-06-29
  • 使用.net core 自带DI框架实现延迟加载功能
    在某些情况,我们希望能延迟一个依赖的初始化。如果使用的是autofac,我们可以通过注入Lazy来实现。 我们对 autofac GitHub上提供的一个例子进行进行简单改造,跑起来...
    99+
    2023-02-17
    .net core 延迟加载 .net core DI框架
  • Entity Framework使用Fluent API配置的方法
    本篇内容介绍了“Entity Framework使用Fluent API配置的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学...
    99+
    2023-06-29
  • Angular实现预加载延迟模块的方法
    Angular实现预加载延迟模块的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!在使用路由延迟加载中,我们介绍了如何使...
    99+
    2024-04-02
  • mybatis延迟加载的作用是什么
    MyBatis的延迟加载(Lazy Loading)是指在查询数据时,只加载需要使用的数据,而不是一次性加载所有相关数据。延迟加载的...
    99+
    2023-08-24
    mybatis
  • ADO.NET的Entity Framework工具怎么使用
    本篇内容主要讲解“ADO.NET的Entity Framework工具怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ADO.NET的Entity Framework工具怎么使用”吧!C#...
    99+
    2023-06-17
  • JS图片延迟加载插件LazyImgv1.0怎么用
    这篇文章给大家分享的是有关JS图片延迟加载插件LazyImgv1.0怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:注:LazyImg 必须定义lazy-data属...
    99+
    2024-04-02
  • JavaScript中延迟加载属性的原理和用法
    本篇内容介绍了“JavaScript中延迟加载属性的原理和用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
  • Angular中NgModule模块和延迟加载模块的用法
    这篇文章主要介绍“Angular中NgModule模块和延迟加载模块的用法”,在日常操作中,相信很多人在Angular中NgModule模块和延迟加载模块的用法问题上存在疑惑,小编查阅了各式资料,整理出简单...
    99+
    2024-04-02
  • java工程师进阶之MyBatis延迟加载的使用
    目录什么是延迟加载?如何使用延迟加载?1.在 config.xml 中开启延迟加载2.将多表关联查询拆分成多个单表查询什么是延迟加载? 延迟加载也叫懒加载、惰性加载,使⽤...
    99+
    2024-04-02
  • CSS属性实现响应式图片延迟加载的方法
    CSS属性实现响应式图片延迟加载的方法在网页开发中,经常会遇到需要加载大量图片的情况,特别是在移动设备上。为了提高页面的加载速度和用户体验,延迟加载(lazy loading)图像成为一种常见的优化方法。延迟加载是指在页面加载时,只加载可见...
    99+
    2023-11-18
    响应式 延迟加载 CSS属性
  • Win10网络延迟高该怎么办?Win10网络延迟高的解决方法
    坚信许多朋友们都早已应用Win10操作系统的电脑上好长时间了,在长期的应用中都会碰到网络延迟高的状况,那麼碰到这类问题该怎么办呢?下边就和小编一起来看一下有哪些解决方法吧。Win10网络延迟高的解决方法最先按住键盘快捷键“win+r”键入“...
    99+
    2023-07-11
  • C#使用Lazy<T>实现对客户订单的延迟加载
    "延迟加载"是指在需要的时候再加载数据。比如获得一个Customer信息,并不会把该Customer的Orders信息一下加载出来,当需要显示Orders的时候再...
    99+
    2024-04-02
  • vue3怎么使用@vueuse/core中的图片懒加载
    这篇文章主要介绍“vue3怎么使用@vueuse/core中的图片懒加载”,在日常操作中,相信很多人在vue3怎么使用@vueuse/core中的图片懒加载问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue...
    99+
    2023-07-05
  • android中framework的使用方法是什么
    在Android中,Framework是指Android系统提供的一组API和系统服务,用于帮助开发者构建应用程序。开发者可以利用F...
    99+
    2024-03-13
    android
  • 怎么在jQuery中使用get()方法加载数据
    这期内容当中小编将会给大家带来有关怎么在jQuery中使用get()方法加载数据,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。jquery是什么jquery是一个简洁而快速的JavaScript库,它具有...
    99+
    2023-06-14
  • Java线程池队列中的延迟队列DelayQueue怎么使用
    今天小编给大家分享一下Java线程池队列中的延迟队列DelayQueue怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧...
    99+
    2023-07-04
  • 怎么在JavaScript中使用reload()方法重新加载文档
    今天就跟大家聊聊有关怎么在JavaScript中使用reload()方法重新加载文档,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。JavaScript是什么JS是JavaScript...
    99+
    2023-06-14
  • Go语言中init函数和defer延迟调用关键词的方法是什么
    这篇文章主要介绍“Go语言中init函数和defer延迟调用关键词的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Go语言中init函数和defer延迟调用关键词的方法是什么”文章能帮助大...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作