小程序延迟加载:延迟加载 vs急切加载(how do you spell eager)

在什么情况下,急于加载比懒惰加载更有益?

实体框架中的延迟加载是加载和访问相关实体时发生的默认现象。然而,急切加载指的是强制加载所有这些关系的做法。

我问这个,因为很明显,延迟加载对资源更友好,即使我们使用ToList()方法,我们仍然可以利用延迟加载行为。

但是,我想也许延迟加载会增加对实际数据库的请求数量,也许这就是为什么有时开发人员使用Inlcude方法来强制加载所有关系。

例如,在 MVC 5 中使用 Visual Studio 自动脚手架时,在控制器中自动创建的 Index 方法始终使用 Eager Loading,我一直有一个问题,为什么 Microsoft 在这种情况下使用 Eager Loading 默认值。

如果有人向我解释在什么情况下渴望加载比懒惰加载更有益,我将不胜感激,为什么我们使用它,而有更多的资源友好的懒惰加载?

108

我认为对这样的关系进行分类是很好的

何时使用热切加载

在一对多关系的“一侧”中,您确定与主要实体一起使用。如文章的用户属性。产品的类别属性。

一般当关系不是太多,急于加载将是很好的做法,以减少服务器上的进一步查询。

何时使用延迟加载

几乎在一对多关系的每一个“收集方”上。如用户文章或类别的产品

你完全知道你不会立即需要一个属性。

注意:像 Transcendent 说的那样,延迟加载可能存在处置问题。

38

Eager Loading:Eager Loading 可帮助您一次加载所有需要的实体。即,相关对象(子对象)随其父对象自动加载。

何时使用:

当关系不是太多时,请使用 Eager Loading。因此,Eager Loading 是减少服务器上进一步查询的良好做法。

当您确定将在各处使用与主实体相关的实体时,请使用 Eager Loading。

延迟加载:在延迟加载的情况下,相关对象(子对象)不会自动与其父对象一起加载,直到它们被请求。默认情况下,LINQ 支持延迟加载。

何时使用:

当您使用一对多集合时,请使用 Lazy Loading。

当您确定没有立即使用相关实体时,请使用“延迟加载”。

注意:实体框架支持三种方式加载相关数据-渴望加载,延迟加载和显式加载。

29

延迟加载将产生多个 SQL 调用,而 Eager 加载可能会通过一个“更重”的调用(使用连接 / 子查询)加载数据。

例如,如果您的 Web 和 sql 服务器之间有一个高 ping,您将使用 Eager 加载,而不是使用懒惰加载 1-by-1 加载相关项目。

16

考虑下面的情况

public cl Person{
    public String Name{get; set;}
    public String Email {get; set;}
    public virtual Employer employer {get; set;}
}
public List<EF.Person> GetPerson(){
    using(EF.DbEntities db = new EF.DbEntities()){
       return db.Person.ToList();
    }
}

现在,在调用此方法后,您不能再延迟加载Employer实体。为什么?因为db对象被处置。所以你必须做Person.Include(x=> x.employer)强制加载。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(110)
收费杀毒软件排名:我怎么能告诉“Windows安全中心”我是一个“杀毒软件”
上一篇
Absolute layout:替代Android中的AbsoluteLayout
下一篇

相关推荐

  • android 计算器极致的计算体验

    Android 计算器是一款用于实现基本数学计算的应用程序,它可以帮助用户进行加减乘除等基本的数学运算。下面是一个简单的 Android 计算器代码示例:…

    2023-01-19 12:40:42
    0 40 15
  • android的:如何在Android上优化应用性能

    Android 是一种基于Linux内核的开源操作系统,由Google主导开发,主要用于移动设备,如智能手机、平板电脑等。它的源代码遵循Apache协议,并且是免费、开放源代码的。…

    2023-02-28 09:43:10
    0 21 26
  • android 获取ip:如何在Android设备上获取IP地址

    Android获取IP的方法有很多,其中一种是通过WifiManager类来获取。下面的代码段可以帮助你获取当前设备的IP地址:…

    2023-01-24 15:43:32
    0 32 91
  • android studio 签名apk在 Android Studio 中轻松实现

    使用Android Studio签名APK的步骤在Android Studio中打开要签名的项目。…

    2023-01-18 02:52:12
    0 72 38
  • android 隐藏:How to Keep Your Android Data Secure and Private

    Android 隐藏是指在 Android 应用程序中隐藏特定的视图或控件,使其不可见。一般来说,可以通过设置视图或控件的 属性为 View. 或 View.GONE 来实现隐藏,例如:…

    2023-03-04 04:39:56
    0 28 88
  • android 投屏软件轻松实现多屏互动

    Android 投屏软件是一种应用程序,可以将 Android 设备的屏幕内容投射到其他设备上,如电视、投影机或电脑显示器。它可以帮助用户在不同的设备之间共享屏幕内容,从而节省时间和精力。下面是一段示例代码,用于演示如何使用 Android 投屏软件:…

    2023-03-01 01:01:06
    0 87 95
  • android打包apk:从开发到发布

    Android打包APK的步骤如下:准备工作:…

    2023-03-10 08:46:33
    0 89 53
  • android studio的sdk构建高效的 Android 应用

    Android Studio SDK(Software Development Kit)是一套用于开发Android应用的工具集。它包括了一系列的API、库文件、编译器、调试器等,可以帮助开发者快速构建出高质量的Android应用。…

    2023-02-15 09:58:58
    0 88 31

发表评论

登录 后才能评论

评论列表(53条)