[转自雨痕]LINQ to SQL - Delay Loaded
原文: http://www.rainsts.net/article.asp?id=550
对 ORM 而言,延迟加载(也叫 Lazy Loading)是必须的,毕竟当我们只是获取用户基本信息时,总不能动不动就返回大段的用户个人简介不是。
在 VS 2008 O/R Designer 中,很容易找到 Delay Loaded 的设置。
只是当我在自动生成的代码中找寻这个设置时,着实迷糊了半天。基于惯性思维,我查看了几乎所有的特性(Attribute)声明,却一无所获,最后才发觉这个家伙竟然是这个样子。
Delay Loaded = False
public partial class User : INotifyPropertyChanging, INotifyPropertyChanged
{
private string _Job;
}
Delay Loaded = True
public partial class User : INotifyPropertyChanging, INotifyPropertyChanged
{
private System.Data.Linq.Link<string> _Job;
}
习惯害人~~~~ 接下来我们测试一下延迟加载的作用。
{
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 输出
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 输出
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相关推荐
- 如何查看Linq to SQL运行时,实际执行的Sql语句
调试Linq to sql代码是, 如果遇到错误,很难判断错误的原因是什么,如果能够输出实际执行的sql原文,对于我们寻找错误的原因有有很大帮助. 以下是我用到的方法: StringBuilder s ...
- Linq to SQL 资源
Scott Guthrie 的 Linq to SQL 系列: 1)介绍 http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to ...
- .NET 3.5(12) - DLINQ(LINQ to SQL)之事务处理和并发处理
步步为营VS 2008 + .NET 3.5(12) - DLINQ(LINQ to SQL)之事务处理和并发处理 作者:webabcd 介绍 以Northwind为示例数据库,DLINQ(LINQ ...
- 一步一步学Linq to sql(六):探究特性
延迟执行 IQueryable query = from c in ctx.Customers select c; 这样的查询句法不会导致语句立即执行,它仅仅是一个描述,对应一个SQL.仅仅在需要 ...
- LINQ to SQL 在 Visual Studio 2008 中的简单应用
在.Net Framework 3.5 中,最激动人心的就是增加了LINQ功能,LINQ在数据集成的基础上提供了新的轻型方式.有了LINQ,我们创建的查询现在就编程了.Net 框架的一个成员,在对要操 ...
- 一步一步学Linq to sql(一):预备知识
从今天起将推出新手讲堂,首先从linq开始详细讲解.一步一步学Linq to sql(一):预备知识 什么是Linq to sql Linq to sql(或者叫DLINQ)是LINQ(.NET语言集 ...
- 一步一步学linq to sql(四)查询句法
select 描述:查询顾客的公司名.地址信息 查询句法: var 构建匿名类型1 = from c in ctx.Customers select new { 公司名 = c.CompanyName ...
- 在.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, ...
- 在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统(Part5) 转
设计开发表现层 表现层负责应用程序的用户界面,图4.1是表现层的详细视图,包括Web Forms, Web User Control, Code-Behind 和共享的用户界面代码.表现层负责推送信息 ...
最新文章
- 最新综述:激光雷达感知深度的域适应方法
- 【剑指offer-Java版】26复杂链表的复制
- 好玩的php函数,几个实用的PHP函数
- 《PowerShell 3.0 Advanced Admin handbook》已于今日上市
- [Spring5]IOC容器_Bean管理_工厂Bean
- 合并排序算法排序过程_合并排序| 用于大型输入的最佳排序算法之一
- 阿里云参加ONS EU 2018,飞天洛神亮相网络顶会
- java servlet 3_java – Servlet 2.5和3之间有什么区别?
- 2020 BrandZ全球品牌价值排行榜100强发布 TikTok首次上榜
- ajax success function_【java 基础】java-回调函数(结合jquery.ajax)
- idea中build project不能用_Java语言编程第40讲——如何在一个项目中组织多个SpringBoot服务
- 开发者论坛一周精粹(第六期):阿里B2B研发管理难题如何应对?打造强有力的技术中台...
- 计算机科技公司的设备签收单,【验收单格式】_设备验收单格式与范本
- PdgCntEditor系列教程一:基础知识
- CentOS 7 yum update 报错 Failed to connect to 2404:6800:4012::200e: Network is unreachable
- Source Generator实战
- @PropertySource配置的用法
- 【长篇博文】Docker学习笔记与深度学习环境的搭建和部署(一)
- 盛大无传奇 啥时离职成见面招呼语
- 安卓图像更新学习总结