延迟加载,延迟加载,急切加载LINQ

时间:2011-01-15 10:04:22

标签: linq-to-sql

懒惰加载中的混乱,延迟加载。它们是相同还是不同?什么是渴望加载。任何人都可以通过示例解释我。

3 个答案:

答案 0 :(得分:3)

这些术语在不同的背景下被抛出相当多,前两个经常互换使用 - 这是我的看法:

延迟加载 - 通常用于表示按需导航属性(例如,thisOrder.Customer只会在您访问时加载客户)。

延迟加载 - 您可以设置常规属性(例如Customer.Notes)以延迟加载(在设计器中)。然后它不会加载Customer对象,而是按照与延迟加载大致相同的方式按需加载。

急切加载 - 如果您确定需要导航属性(甚至是延迟属性),您可以告诉LINQ to SQL使用DataContext的LoadOptions同时获取它们。通过生成连接,这将从第一个查询(SELECT N + 1问题)中返回的每个实体的1个查询和1个以上查询切换。

答案 1 :(得分:1)

我不知道你是否找到了你的答案但是,我也希望看到它们之间的区别,我发现了Nikolaos Kantzelis关于实体框架4中的延迟加载,急切加载,显式加载的一篇不错的小文章:

http://weblogs.asp.net/dotnetstories/archive/2011/03/10/lazy-loading-eager-loading-explicit-loading-in-entity-framework-4.aspx

答案 2 :(得分:0)

https://github.com/jakubmaguza/Lazy-vs-Deferred-vs-Normal

在这里你可以找到差异。只需从文件中下载或复制粘贴代码,然后按开始。你会看到这样的输出: enter image description here

退役申请也会有所帮助。