原文: http://www.rainsts.net/article.asp?id=550

对 ORM 而言,延迟加载(也叫 Lazy Loading)是必须的,毕竟当我们只是获取用户基本信息时,总不能动不动就返回大段的用户个人简介不是。

在 VS 2008 O/R Designer 中,很容易找到 Delay Loaded 的设置。

只是当我在自动生成的代码中找寻这个设置时,着实迷糊了半天。基于惯性思维,我查看了几乎所有的特性(Attribute)声明,却一无所获,最后才发觉这个家伙竟然是这个样子。

Delay Loaded = False

[Table(Name="dbo.[User]")]
public partial class User : INotifyPropertyChanging, INotifyPropertyChanged
{
  private string _Job;
}

Delay Loaded = True

[Table(Name="dbo.[User]")]
public partial class User : INotifyPropertyChanging, INotifyPropertyChanged
{
  private System.Data.Linq.Link<string> _Job;
}

习惯害人~~~~ 接下来我们测试一下延迟加载的作用。

using (DataClasses1DataContext context = new DataClasses1DataContext())
{
  context.Log = Console.Out;

var user = (from u in context.Users where u.Name == "user1" select u).FirstOrDefault();
  Console.WriteLine(user.Name);
  Console.WriteLine(user.Job);
}

Delay Loaded = False 输出

SELECT TOP 1 [t0].[Id], [t0].[Name], [t0].[Age], [t0].[Job]
FROM [dbo].[User] AS [t0]
WHERE [t0].[Name] = @p0
-- @p0: Input String (Size = 5; Prec = 0; Scale = 0) [user1]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20706.1

user1
job

Delay Loaded = True 输出

SELECT TOP 1 [t0].[Id], [t0].[Name], [t0].[Age]
FROM [dbo].[User] AS [t0]
WHERE [t0].[Name] = @p0
-- @p0: Input String (Size = 5; Prec = 0; Scale = 0) [user1]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20706.1

user1
SELECT [t0].[Job]
FROM [dbo].[User] AS [t0]
WHERE [t0].[Name] = @p0
-- @p0: Input String (Size = 5; Prec = 0; Scale = 0) [user1]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20706.1

job

当设置延迟加载后,查询 User 时并没有返回 Job 字段值,只有当访问该属性时才进行了第二次 SQL 操作,很显然这就是我们所需要的。延迟加载虽然很有用,但并不表示我们应该将 n 多的 Column 设置成 Delay Loaded = true,或许你要做的是创建另外一个 One-to-One / Base-to-Detail。

注意!当 "context.DeferredLoadingEnabled = false" 或 "context.ObjectTrackingEnabled = false" 时,都会导致 Delay Loaded 失效,不再进行延迟字段载入操作。

[转自雨痕]LINQ to SQL - Delay Loaded相关推荐

  1. 如何查看Linq to SQL运行时,实际执行的Sql语句

    调试Linq to sql代码是, 如果遇到错误,很难判断错误的原因是什么,如果能够输出实际执行的sql原文,对于我们寻找错误的原因有有很大帮助. 以下是我用到的方法: StringBuilder s ...

  2. Linq to SQL 资源

    Scott Guthrie 的 Linq to SQL 系列: 1)介绍 http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to ...

  3. .NET 3.5(12) - DLINQ(LINQ to SQL)之事务处理和并发处理

    步步为营VS 2008 + .NET 3.5(12) - DLINQ(LINQ to SQL)之事务处理和并发处理 作者:webabcd 介绍 以Northwind为示例数据库,DLINQ(LINQ ...

  4. 一步一步学Linq to sql(六):探究特性

      延迟执行 IQueryable query = from c in ctx.Customers select c; 这样的查询句法不会导致语句立即执行,它仅仅是一个描述,对应一个SQL.仅仅在需要 ...

  5. LINQ to SQL 在 Visual Studio 2008 中的简单应用

    在.Net Framework 3.5 中,最激动人心的就是增加了LINQ功能,LINQ在数据集成的基础上提供了新的轻型方式.有了LINQ,我们创建的查询现在就编程了.Net 框架的一个成员,在对要操 ...

  6. 一步一步学Linq to sql(一):预备知识

    从今天起将推出新手讲堂,首先从linq开始详细讲解.一步一步学Linq to sql(一):预备知识 什么是Linq to sql Linq to sql(或者叫DLINQ)是LINQ(.NET语言集 ...

  7. 一步一步学linq to sql(四)查询句法

    select 描述:查询顾客的公司名.地址信息 查询句法: var 构建匿名类型1 = from c in ctx.Customers select new { 公司名 = c.CompanyName ...

  8. 在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统 (Part 1)

    在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统 (Part 1) 在新的.Net Framework 3.5平台上,Microsoft发布了LINQ(C# 3.0, ...

  9. 在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统(Part5) 转

    设计开发表现层 表现层负责应用程序的用户界面,图4.1是表现层的详细视图,包括Web Forms, Web User Control, Code-Behind 和共享的用户界面代码.表现层负责推送信息 ...

最新文章

  1. 最新综述:激光雷达感知深度的域适应方法
  2. 【剑指offer-Java版】26复杂链表的复制
  3. 好玩的php函数,几个实用的PHP函数
  4. 《PowerShell 3.0 Advanced Admin handbook》已于今日上市
  5. [Spring5]IOC容器_Bean管理_工厂Bean
  6. 合并排序算法排序过程_合并排序| 用于大型输入的最佳排序算法之一
  7. 阿里云参加ONS EU 2018,飞天洛神亮相网络顶会
  8. java servlet 3_java – Servlet 2.5和3之间有什么区别?
  9. 2020 BrandZ全球品牌价值排行榜100强发布 TikTok首次上榜
  10. ajax success function_【java 基础】java-回调函数(结合jquery.ajax)
  11. idea中build project不能用_Java语言编程第40讲——如何在一个项目中组织多个SpringBoot服务
  12. 开发者论坛一周精粹(第六期):阿里B2B研发管理难题如何应对?打造强有力的技术中台...
  13. 计算机科技公司的设备签收单,【验收单格式】_设备验收单格式与范本
  14. PdgCntEditor系列教程一:基础知识
  15. CentOS 7 yum update 报错 Failed to connect to 2404:6800:4012::200e: Network is unreachable
  16. Source Generator实战
  17. @PropertySource配置的用法
  18. 【长篇博文】Docker学习笔记与深度学习环境的搭建和部署(一)
  19. 盛大无传奇 啥时离职成见面招呼语
  20. 安卓图像更新学习总结

热门文章

  1. LSTM(长短期记忆) Bi-LSTM(双向长短时记忆)
  2. 华丽酷炫的汽车Mac高清动态壁纸
  3. 【IM项目】框架分析与部署
  4. 慕尼黑工业大学计算机博士申请条件,慕尼黑工业大学博士申请.doc
  5. Unity Hub 无法登录
  6. 一吨应变式称重式传感器电路图_应变式传感器原理与优点
  7. 用 Swagger 测试任务分配问题中的 API
  8. 赛效:在线查询QQ号价格评估的方法是什么
  9. 2022-2028全球与中国Oracle CX客户体验云咨询服务市场现状及未来发展趋势
  10. OLT设备密码遗忘解决方法?