小程序延迟加载:延迟加载 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 class 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)强制加载。

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

(214)
手机系统文件怎么清理:清理手机上的文件夹(remove app from folder android)
上一篇
Absolute layout:替代Android中的AbsoluteLayout
下一篇

相关推荐

  • 软件系统安装调试方案:DAQ软件替代方案(ni daq express)

    关于软件系统安装调试方案的问题,在ni daq express中经常遇到,我想获得 NI USB-6008 DAQ,但我不想在我的钱包里烧一个洞购买 LABView。是否有任何替代 LABView 作为此卡的 DAQ 软件?是否可以使用 Visual C++ Express 或像 BioMOBIUS 这样的 OS 软件与此 DAQ 卡?…

    2024-01-27 00:45:11
    0 48 49
  • Ar per:无法在AR支持的设备中创建AR会话

    关于Ar per的问题,在ar supported phones中经常遇到,我正在尝试在我的应用程序中实现 AR Core 功能。这在少数设备中工作正常 (支持 AR 核心-一加 6T 和小米 Redmi Note 8)。在少数设备中不起作用 (也支持 AR 核心-一加 7T 和三星 M31s)。…

    2024-01-17 12:32:53
    0 17 89
  • Bloating:ARM故意膨胀编译代码 (arm bloating)

    关于Bloating的问题,在arm bloating中经常遇到,在Fastest Cortex M0+ Thumb 32x32=64 multiplication function?中处理问题时,我编写了以下 C 函数来查看它将如何编译:…

    2024-01-30 10:20:22
    0 40 85
  • Pe pero:测试 PE文件(file pe)

    关于Pe pero的问题,在file pe中经常遇到,任何人都可以帮助我在哪里可以找到示例便携式可执行文件来测试我的小反病毒项目?任何值得信赖的 PC 中 PE 文件的参考将非常有帮助。我正在 Windows 平台上进行测试。…

    2023-12-17 07:50:03
    0 51 64
  • Re lie:谷歌 foobar蛋糕不是谎言

    关于Re lie的问题,在cake test challenge中经常遇到,蛋糕不是谎言!…

    2024-02-16 14:19:32
    0 54 57
  • For life:SAMLTOKENLIFE TIME最佳实践

    关于For life的问题,在life token中经常遇到,SSO 应用程序的 saml 令牌寿命应该是多少。是否有任何最佳实践?我们是否需要维护应用程序会话等于 saml token 生存期?…

    2023-12-28 10:31:08
    0 30 60
  • android 键盘:如何让你的 Android 键盘更加高效?

    Android 键盘是 Android 平台上的软件键盘,它提供了一种方便快捷的输入文本的方式。它可以帮助用户输入文本信息,如短信、电子邮件和搜索查询等。…

    2023-08-25 11:27:02
    0 19 22
  • android 个推:让你的Android应用变得更加强大

    Android 个推是一个跨平台的推送服务,允许开发者在 Android 平台上发送消息给用户。它是一个基于云端的消息推送服务,可以为应用提供实时、可靠的消息推送服务。…

    2023-05-10 15:51:25
    0 39 84

发表评论

登录 后才能评论

评论列表(87条)