﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Timothy&#039;s Space &#187; load</title>
	<atom:link href="http://www.xiaozhou.net/tag/load/feed" rel="self" type="application/rss+xml" />
	<link>http://www.xiaozhou.net</link>
	<description>君看一叶舟，出没风波里</description>
	<lastBuildDate>Tue, 07 Feb 2012 04:28:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>自动监控VPS负载并重启Web服务的脚本</title>
		<link>http://www.xiaozhou.net/ittech/vps-ittech/vps_web_service_auto_monitoring_and_restarting-2011-05-14.htm</link>
		<comments>http://www.xiaozhou.net/ittech/vps-ittech/vps_web_service_auto_monitoring_and_restarting-2011-05-14.htm#comments</comments>
		<pubDate>Sat, 14 May 2011 09:00:00 +0000</pubDate>
		<dc:creator>Timothy</dc:creator>
				<category><![CDATA[vps]]></category>
		<category><![CDATA[average]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[服务]]></category>
		<category><![CDATA[脚本]]></category>
		<category><![CDATA[负载]]></category>

		<guid isPermaLink="false">http://www.xiaozhou.net/ittech/vps-ittech/%e8%87%aa%e5%8a%a8%e7%9b%91%e6%8e%a7vps%e8%b4%9f%e8%bd%bd%e5%b9%b6%e9%87%8d%e5%90%afweb%e6%9c%8d%e5%8a%a1%e7%9a%84%e8%84%9a%e6%9c%ac-2011-05-14.htm</guid>
		<description><![CDATA[VPS其实和一般的独立Linux服务器，在使用上基本没有区别，因为现在的虚拟化技术以及很成熟了，不过VPS和独服还是有一个很大的差异，那就是系统资源和性能上。通常，VPS都是由一个独立服务器划分出来的，所以在资源和性能优势上，远比不上独服。 就拿前段时间本VPS受到的DDOS攻击来说，其实DDOS也是利用大量发起的请求，导致被攻击VPS(或服务器)内存资源被耗尽，系统负载过高，而导致80端口的Http服务无响应，从而达到最终的攻击目的。DDOS虽然防不胜防，不过总还是有一些办法，能把DDOS的影响减小的。比如定时监控系统状态，然后自动重启Web服务，这也是本文要介绍的一种方法。 在VPS被攻击的时候，有一些系统指标能反应出系统是否处于被攻击状态，一个就是查看内存剩余量，当然，这并不是最准确的方法，另外一种，就是查看Linux的系统平均负载值。 Linux系统负载介绍 系统平均负载被定义为在特定时间间隔内运行队列中的平均进程树。如果一个进程满足以下条件则其就会位于运行队列中： - 它没有在等待I/O操作的结果 - 它没有主动进入等待状态(也就是没有调用&#8217;wait&#8217;) - 没有被停止(例如：等待终止) Linux系统中，通过很多命令都可以查看当前的系统平均负载值，比如：w,top或者uptime命令 命令输出的内容表示在过去的1、5、15分钟内运行队列中的平均进程数量。 通常情况下，这些值会根据系统的CPU个数有一些区别，对于单核CPU来说，如果负载值达到了1，表明系统负载已经达到了100%，不过对于双核系统来说，1只表示系统负载值只达到50%左右。 以此类推，在多处理器系统中，负载均值是基于内核的数量决定的。以 100% 负载计算，1.00 表示单个处理器，而 2.00 则说明有两个双处理器，那么 4.00 就说明主机具有四个处理器。 根据系统负载值自动重启Web服务 下面的脚本，以装有Apache服务器的VPS为例，定时判断系统负载值，当达到5时，认为系统已经超负荷运转，这时，脚本会自动重启Apache服务，释放系统资源，以达到让VPS服务器平稳运行的目的。 *注：脚本来自网络，非原创，出处不明，本人做了少许改动 ?View Code BASH1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [...]]]></description>
			<content:encoded><![CDATA[<p>VPS其实和一般的独立Linux服务器，在使用上基本没有区别，因为现在的虚拟化技术以及很成熟了，不过VPS和独服还是有一个很大的差异，那就是系统资源和性能上。通常，VPS都是由一个独立服务器划分出来的，所以在资源和性能优势上，远比不上独服。</p>
<p>就拿前段时间本VPS受到的DDOS攻击来说，其实DDOS也是利用大量发起的请求，导致被攻击VPS(或服务器)内存资源被耗尽，系统负载过高，而导致80端口的Http服务无响应，从而达到最终的攻击目的。DDOS虽然防不胜防，不过总还是有一些办法，能把DDOS的影响减小的。比如定时监控系统状态，然后自动重启Web服务，这也是本文要介绍的一种方法。<span id="more-1171"></span></p>
<p>在VPS被攻击的时候，有一些系统指标能反应出系统是否处于被攻击状态，一个就是查看内存剩余量，当然，这并不是最准确的方法，另外一种，就是查看Linux的系统平均负载值。</p>
<h4>Linux系统负载介绍</h4>
<p>系统平均负载被定义为在特定时间间隔内运行队列中的平均进程树。如果一个进程满足以下条件则其就会位于运行队列中：<br />
- 它没有在等待I/O操作的结果<br />
- 它没有主动进入等待状态(也就是没有调用&#8217;wait&#8217;)<br />
- 没有被停止(例如：等待终止)</p>
<p>Linux系统中，通过很多命令都可以查看当前的系统平均负载值，比如：w,top或者uptime命令</p>
<p><a href="http://www.xiaozhou.net/pics/Apache_E303/uptime.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="uptime" src="http://www.xiaozhou.net/pics/Apache_E303/uptime_thumb.jpg" border="0" alt="uptime" width="693" height="40" /></a></p>
<p>命令输出的内容表示在过去的1、5、15分钟内运行队列中的平均进程数量。</p>
<p>通常情况下，这些值会根据系统的CPU个数有一些区别，对于单核CPU来说，如果负载值达到了1，表明系统负载已经达到了100%，不过对于双核系统来说，1只表示系统负载值只达到50%左右。</p>
<p>以此类推，在多处理器系统中，负载均值是基于内核的数量决定的。以 100% 负载计算，1.00 表示单个处理器，而 2.00 则说明有两个双处理器，那么 4.00 就说明主机具有四个处理器。</p>
<h4>根据系统负载值自动重启Web服务</h4>
<p>下面的脚本，以装有Apache服务器的VPS为例，定时判断系统负载值，当达到5时，认为系统已经超负荷运转，这时，脚本会自动重启Apache服务，释放系统资源，以达到让VPS服务器平稳运行的目的。</p>
<p><strong><span style="color: #ff0000;">*注：脚本来自网络，非原创，出处不明，本人做了少许改动</span></strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1171code2'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p11712"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
</pre></td><td class="code" id="p1171code2"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #666666; font-style: italic;">#usage: */2 * * * * root /root/checkload.sh &gt;&gt;/root/checkload.log</span>
&nbsp;
<span style="color: #007800;">TOP_SYS_LOAD_NUM</span>=<span style="color: #000000;">5</span>
<span style="color: #007800;">SYS_LOAD_NUM</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">uptime</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $(NF-2)}'</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">'s/,//'</span><span style="color: #000000; font-weight: bold;">`</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #ff0000;">&quot;%y-%m-%d&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">uptime</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$TOP_SYS_LOAD_NUM</span> &lt; <span style="color: #007800;">$SYS_LOAD_NUM</span>&quot;</span><span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">bc</span><span style="color: #000000; font-weight: bold;">`</span> <span style="color: #660033;">-eq</span> <span style="color: #000000;">1</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;AutoStart:&quot;</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #ff0000;">&quot;%y-%m-%d %H:%M:%S&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #ff0000;">&quot;pkill httpd&quot;</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">ps</span> <span style="color: #660033;">-ef</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> httpd <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">wc</span> -l<span style="color: #000000; font-weight: bold;">`</span>
pkill httpd
<span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">10</span>
<span style="color: #000000; font-weight: bold;">for</span> i <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000;">1</span> <span style="color: #000000;">2</span> <span style="color: #000000;">3</span>
<span style="color: #000000; font-weight: bold;">do</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">`</span>pgrep httpd <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">wc</span> -l<span style="color: #000000; font-weight: bold;">`</span> <span style="color: #660033;">-le</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
service httpd start
<span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">15</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;AutoStart:&quot;</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #ff0000;">&quot;%y-%m-%d %H:%M:%S&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #ff0000;">&quot;start httpd&quot;</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">ps</span> <span style="color: #660033;">-ef</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> httpd <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">wc</span> -l<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">done</span>
<span style="color: #000000; font-weight: bold;">else</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">`</span>pgrep httpd <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">wc</span> -l<span style="color: #000000; font-weight: bold;">`</span> <span style="color: #660033;">-le</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
service httpd start
<span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">15</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;AutoStart:&quot;</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #ff0000;">&quot;%y-%m-%d %H:%M:%S&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #ff0000;">&quot;start httpd&quot;</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">ps</span> <span style="color: #660033;">-ef</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> httpd <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">wc</span> -l<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre></td></tr></table></div>

<p>脚本中TOP_SYS_LOAD_NUM表示最大允许的系统平均负载值，当超过这一值的时候，脚本就开始重启apache服务。脚本的使用也挺简便，直接到/etc/cron.d/ 建立一个定时执行文件，填入如下内容即可：</p>
<p>*/2 * * * * root /root/checkload.sh >>/root/checkload.log</p>
<p>这里*/2，表示每两分钟执行一次指定的脚本，并将执行结果输出到/root/checkload.log文件中。</p>
<p>你也可以根据自己的需要，来修改执行频率。</p>
<h4>小结</h4>
<p>此脚本已经部署到我的VPS上一段时间，从使用的情况来看，效果还比较不错。</p>
<p class="announce"><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;">声明:</span> 此Blog中的文章和随笔仅代表作者在某一特定时间内的观点和结论，对其完全的正确不做任何担保或假设 <br /> 本站文章均采用 <a rel="nofollow" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="署名-非商业性使用-相同方式共享">知识共享署名-相同方式共享3.0</a> 协议进行授权，除非注明，本站文章均为原创，转载请注明转自  <a href="http://www.xiaozhou.net">Timothy&#039;s Space</a> 并应以链接形式标明本文地址!</p>]]></content:encoded>
			<wfw:commentRss>http://www.xiaozhou.net/ittech/vps-ittech/vps_web_service_auto_monitoring_and_restarting-2011-05-14.htm/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>启用Lazy Load插件</title>
		<link>http://www.xiaozhou.net/aboutsite/wordpress/lazy_load_plugin_enabled-2010-06-19.htm</link>
		<comments>http://www.xiaozhou.net/aboutsite/wordpress/lazy_load_plugin_enabled-2010-06-19.htm#comments</comments>
		<pubDate>Sat, 19 Jun 2010 10:21:00 +0000</pubDate>
		<dc:creator>Timothy</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[lazy]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[延迟加载]]></category>
		<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://www.xiaozhou.net/aboutsite/wordpress/%e5%90%af%e7%94%a8lazy-load%e6%8f%92%e4%bb%b6-2010-06-19.htm</guid>
		<description><![CDATA[Lazy Load是基于jQuery的插件，能让页面的加载更加有序。在遇到图片比较多的页面的时候，就更能派上用场了。由于Blog加载了jQuery，正好也可以用上这个。 具体的设置，可以参考A-Shun同学的相关文章。启用后试用了一下，效果还不错。推荐有兴趣的同学也试试。 声明: 此Blog中的文章和随笔仅代表作者在某一特定时间内的观点和结论，对其完全的正确不做任何担保或假设 本站文章均采用 知识共享署名-相同方式共享3.0 协议进行授权，除非注明，本站文章均为原创，转载请注明转自 Timothy&#039;s Space 并应以链接形式标明本文地址!]]></description>
			<content:encoded><![CDATA[<p>Lazy Load是基于jQuery的插件，能让页面的加载更加有序。在遇到图片比较多的页面的时候，就更能派上用场了。由于Blog加载了jQuery，正好也可以用上这个。</p>
<p>具体的设置，可以参考A-Shun同学的<a href="http://www.a-shun.com/archives/21363.html" target="_blank">相关文章</a>。启用后试用了一下，效果还不错。推荐有兴趣的同学也试试。</p>
<p class="announce"><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;">声明:</span> 此Blog中的文章和随笔仅代表作者在某一特定时间内的观点和结论，对其完全的正确不做任何担保或假设 <br /> 本站文章均采用 <a rel="nofollow" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="署名-非商业性使用-相同方式共享">知识共享署名-相同方式共享3.0</a> 协议进行授权，除非注明，本站文章均为原创，转载请注明转自  <a href="http://www.xiaozhou.net">Timothy&#039;s Space</a> 并应以链接形式标明本文地址!</p>]]></content:encoded>
			<wfw:commentRss>http://www.xiaozhou.net/aboutsite/wordpress/lazy_load_plugin_enabled-2010-06-19.htm/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Linq to Sql 之延迟加载与立即加载</title>
		<link>http://www.xiaozhou.net/dotnetdevelopment/linq-to-sql-delay-load-and-immediately-load-2009-12-20.htm</link>
		<comments>http://www.xiaozhou.net/dotnetdevelopment/linq-to-sql-delay-load-and-immediately-load-2009-12-20.htm#comments</comments>
		<pubDate>Sun, 20 Dec 2009 14:03:00 +0000</pubDate>
		<dc:creator>Timothy</dc:creator>
				<category><![CDATA[.NET开发]]></category>
		<category><![CDATA[DeferredLoadingEnabled]]></category>
		<category><![CDATA[delay]]></category>
		<category><![CDATA[linq]]></category>
		<category><![CDATA[linq2sql]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[延迟加载]]></category>
		<category><![CDATA[立即加载]]></category>

		<guid isPermaLink="false">http://www.xiaozhou.net/dotnetdevelopment/linq-to-sql-%e4%b9%8b%e5%bb%b6%e8%bf%9f%e5%8a%a0%e8%bd%bd%e4%b8%8e%e7%ab%8b%e5%8d%b3%e5%8a%a0%e8%bd%bd-2009-12-20.htm</guid>
		<description><![CDATA[Linq的延迟加载 Linq to Sql中默认采用的模式就是延迟执行，所谓延迟执行，其实就是在获取对象本身时，并不会获取和其关联的其他对象，只有在访问其关联对象的时候，程序才会去加载关联对象的数据到内存中。这样的好处是程序不会在初次访问的时候，就加载大批量的数据，而是以一种延迟加载的方式进行处理，相对而言，对于系统和网络的性能开支会减小很多。对于一个默认的Linq to Sql查询，延迟加载就是其默认的设置，不过，在某些情况下，延迟加载并非完全“智能”，不但没有实现其本意，反而增大了网络流量和性能开支。下面我们以SQL Server中的演示数据库NorthWind来试验一下： ?View Code CSHARP1 2 3 4 5 6 7 8 9 10 11 12 13 LinqTestDataContext ctx = new LinqTestDataContext&#40;&#41;; ctx.Log = Console.Out; &#160; var result = ctx.Orders.Where&#40;p =&#62; p.OrderID == 10251&#41;; &#160; foreach &#40;var t in result&#41; &#123; Console.WriteLine&#40;&#34;OrderID:&#34; + t.OrderID + &#34;-&#34; + &#34;OrderDate:&#34; + t.OrderDate.Value.ToString&#40;&#34;yyyy-MM-dd&#34;&#41;&#41;; [...]]]></description>
			<content:encoded><![CDATA[<h3>Linq的延迟加载</h3>
<p>Linq to Sql中默认采用的模式就是延迟执行，所谓延迟执行，其实就是在获取对象本身时，并不会获取和其关联的其他对象，只有在访问其关联对象的时候，程序才会去加载关联对象的数据到内存中。这样的好处是程序不会在初次访问的时候，就加载大批量的数据，而是以一种延迟加载的方式进行处理，相对而言，对于系统和网络的性能开支会减小很多。对于一个默认的Linq to Sql查询，延迟加载就是其默认的设置，不过，在某些情况下，延迟加载并非完全“智能”，不但没有实现其本意，反而增大了网络流量和性能开支。下面我们以SQL Server中的演示数据库NorthWind来试验一下：</p>
<p><a href="http://www.xiaozhou.net/pics/LinqtoSql_DA95/linq_context.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="linq_context" border="0" alt="linq_context" src="http://www.xiaozhou.net/pics/LinqtoSql_DA95/linq_context_thumb.jpg" width="624" height="312" /></a>     </p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p454code10'); return false;">View Code</a> CSHARP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p45410"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code" id="p454code10"><pre class="csharp" style="font-family:monospace;">LinqTestDataContext ctx <span style="color: #008000;">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> LinqTestDataContext<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
ctx<span style="color: #008000;">.</span><span style="color: #0000FF;">Log</span> <span style="color: #008000;">=</span> Console<span style="color: #008000;">.</span><span style="color: #0600FF; font-weight: bold;">Out</span><span style="color: #008000;">;</span>
&nbsp;
var result <span style="color: #008000;">=</span> ctx<span style="color: #008000;">.</span><span style="color: #0000FF;">Orders</span><span style="color: #008000;">.</span><span style="color: #0600FF; font-weight: bold;">Where</span><span style="color: #008000;">&#40;</span>p <span style="color: #008000;">=&gt;</span> p<span style="color: #008000;">.</span><span style="color: #0000FF;">OrderID</span> <span style="color: #008000;">==</span> <span style="color: #FF0000;">10251</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF; font-weight: bold;">foreach</span> <span style="color: #008000;">&#40;</span>var t <span style="color: #0600FF; font-weight: bold;">in</span> result<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;OrderID:&quot;</span> 
		<span style="color: #008000;">+</span> t<span style="color: #008000;">.</span><span style="color: #0000FF;">OrderID</span> 
		<span style="color: #008000;">+</span> <span style="color: #666666;">&quot;-&quot;</span> 
		<span style="color: #008000;">+</span> <span style="color: #666666;">&quot;OrderDate:&quot;</span> 
		<span style="color: #008000;">+</span> t<span style="color: #008000;">.</span><span style="color: #0000FF;">OrderDate</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Value</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;yyyy-MM-dd&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>通过Linq to sql查询所有OrderID为10251的订单信息，并输出订单编号和订单日期。通过显示Linq的日志输出，我们可以看到后台生成的SQL语句如下：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p454code11'); return false;">View Code</a> SQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p45411"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p454code11"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>OrderID<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>CustomerID<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>EmployeeID<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>OrderDate<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>
t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>RequiredDate<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShippedDate<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShipVia<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Freight<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Sh
ipName<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShipAddress<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShipCity<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShipRegion<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShipPosta
lCode<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShipCountry<span style="color: #66cc66;">&#93;</span>
<span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #66cc66;">&#91;</span>dbo<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Orders<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span>
<span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>OrderID<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">=</span> @p0</pre></td></tr></table></div>

<p>输出的SQL看来还比较正常。下面我们再来改一下我们的程序： </p>
<p></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p454code12'); return false;">View Code</a> CSHARP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p45412"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code" id="p454code12"><pre class="csharp" style="font-family:monospace;"> <span style="color: #0600FF; font-weight: bold;">foreach</span> <span style="color: #008000;">&#40;</span>var t <span style="color: #0600FF; font-weight: bold;">in</span> result<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;OrderID:&quot;</span> <span style="color: #008000;">+</span> t<span style="color: #008000;">.</span><span style="color: #0000FF;">OrderID</span> 
		<span style="color: #008000;">+</span> <span style="color: #666666;">&quot;-OrderDate:&quot;</span> 
		<span style="color: #008000;">+</span> t<span style="color: #008000;">.</span><span style="color: #0000FF;">OrderDate</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Value</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;yyyy-MM-dd&quot;</span><span style="color: #008000;">&#41;</span> 
		<span style="color: #008000;">+</span><span style="color: #666666;">&quot;-CustomerName:&quot;</span>
		<span style="color: #008000;">+</span> t<span style="color: #008000;">.</span><span style="color: #0000FF;">Customer</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ContactName</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">foreach</span><span style="color: #008000;">&#40;</span>var m <span style="color: #0600FF; font-weight: bold;">in</span> t<span style="color: #008000;">.</span><span style="color: #0000FF;">Order_Details</span><span style="color: #008000;">&#41;</span>
                Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;ProductID:&quot;</span> 
		<span style="color: #008000;">+</span> m<span style="color: #008000;">.</span><span style="color: #0000FF;">ProductID</span> 
		<span style="color: #008000;">+</span> <span style="color: #666666;">&quot;-Price:&quot;</span> 
		<span style="color: #008000;">+</span> m<span style="color: #008000;">.</span><span style="color: #0000FF;">UnitPrice</span> 
		<span style="color: #008000;">+</span> <span style="color: #666666;">&quot;-Amount:&quot;</span> 
		<span style="color: #008000;">+</span> m<span style="color: #008000;">.</span><span style="color: #0000FF;">Quantity</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>出了输出订单相关信息外，还输出其关联对象：客户姓名、订单中的产品编号、单价、数量</p>
<p>再来看看输出的SQL语句：</p>
<p>
  </p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p454code13'); return false;">View Code</a> SQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p45413"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code" id="p454code13"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>OrderID<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>CustomerID<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>EmployeeID<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>OrderDate<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>
t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>RequiredDate<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShippedDate<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShipVia<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Freight<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Sh
ipName<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShipAddress<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShipCity<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShipRegion<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShipPosta
lCode<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShipCountry<span style="color: #66cc66;">&#93;</span>
<span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #66cc66;">&#91;</span>dbo<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Orders<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span>
<span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>OrderID<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">=</span> @p0
&nbsp;
&nbsp;
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>CustomerID<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>CompanyName<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ContactName<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ContactT
itle<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Address<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>City<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Region<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>PostalCode<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Coun
try<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Phone<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Fax<span style="color: #66cc66;">&#93;</span>
<span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #66cc66;">&#91;</span>dbo<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Customers<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span>
<span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>CustomerID<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">=</span> @p0
&nbsp;
&nbsp;
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>OrderID<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ProductID<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>UnitPrice<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Quantity<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span>
<span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Discount<span style="color: #66cc66;">&#93;</span>
<span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #66cc66;">&#91;</span>dbo<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span><span style="color: #993333; font-weight: bold;">Order</span> Details<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span>
<span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>OrderID<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">=</span> @p0</pre></td></tr></table></div>

<p>我们可以看到，对于我们修改后的代码，程序向数据库请求了三条SQL语句，当然，这还不是最坏的情况，但是我们在这里的确看到延迟加载似乎“变了味道”，不但没有节省开支，反而增大了网络浏览。怎样才能改善这样的情况呢？</p>
<h3>关于立即加载</h3>
<p>其实我们知道，有很多扩展方法会导致延迟加载失效，而开始立即执行。当我们在调用诸如：ToList、ToDictionary、ToLookup或者ToArray之类的扩展方法之后，程序会将最终的结果存放到某个临时的变量集合中，并让所有的数据一次性的加载完成。</p>
<p>另外，还有一种方式，通过设置DataContext的DeferredLoadingEnabled属性为false,显示的关闭默认的延迟加载方式。</p>
<p></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p454code14'); return false;">View Code</a> CSHARP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p45414"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p454code14"><pre class="csharp" style="font-family:monospace;">LinqTestDataContext ctx <span style="color: #008000;">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> LinqTestDataContext<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
ctx<span style="color: #008000;">.</span><span style="color: #0000FF;">DeferredLoadingEnabled</span> <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">;</span></pre></td></tr></table></div>

<p>&#160;</p>
<p>这些方式虽然比较方便，但是还是有一定的局限性。例如，简单的使用ToList只能解决一些简单的查询问题，而对于复杂的查询需求，ToList还是不能解决延迟取得子对象所引发的多次查询问题。并且，在大量数据被加载到内存中的时候，对内存的需求也是很大的。不过，幸好Linq to sql给我们提供了另外一套不错的方法。</p>
<h3>使用DataLoadOptions实现对加载对象的优化</h3>
<p>Linq to Sql提供DataLoadOptions，用以立即加载关联的对象数据，其中包含两种方法：<br />
  <br />LoadWith方法，用于立即加载与主对象相关联的数据 </p>
<p>AssociateWith方法，用于对关联对象的数据进行筛选，并加载</p>
<p>有了DataLoadOptions，我们就可以用如下的方式优化我们的查询中需要加载的对象：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p454code15'); return false;">View Code</a> CSHARP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p45415"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
</pre></td><td class="code" id="p454code15"><pre class="csharp" style="font-family:monospace;">            LinqTestDataContext ctx <span style="color: #008000;">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> LinqTestDataContext<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            ctx<span style="color: #008000;">.</span><span style="color: #0000FF;">Log</span> <span style="color: #008000;">=</span> Console<span style="color: #008000;">.</span><span style="color: #0600FF; font-weight: bold;">Out</span><span style="color: #008000;">;</span>
&nbsp;
            DataLoadOptions dl <span style="color: #008000;">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> DataLoadOptions<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            dl<span style="color: #008000;">.</span><span style="color: #0000FF;">LoadWith</span><span style="color: #008000;">&lt;</span>order<span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span>p <span style="color: #008000;">=&gt;</span> p<span style="color: #008000;">.</span><span style="color: #0000FF;">Customer</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            dl<span style="color: #008000;">.</span><span style="color: #0000FF;">LoadWith</span><span style="color: #008000;">&lt;</span>order<span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span>p <span style="color: #008000;">=&gt;</span> p<span style="color: #008000;">.</span><span style="color: #0000FF;">Order_Details</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            ctx<span style="color: #008000;">.</span><span style="color: #0000FF;">LoadOptions</span> <span style="color: #008000;">=</span> dl<span style="color: #008000;">;</span>
&nbsp;
            var result <span style="color: #008000;">=</span> ctx<span style="color: #008000;">.</span><span style="color: #0000FF;">Orders</span><span style="color: #008000;">.</span><span style="color: #0600FF; font-weight: bold;">Where</span><span style="color: #008000;">&#40;</span>p <span style="color: #008000;">=&gt;</span> p<span style="color: #008000;">.</span><span style="color: #0000FF;">OrderID</span> <span style="color: #008000;">==</span> <span style="color: #FF0000;">10251</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToList</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">foreach</span> <span style="color: #008000;">&#40;</span>var t <span style="color: #0600FF; font-weight: bold;">in</span> result<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;OrderID:&quot;</span> <span style="color: #008000;">+</span> 
		t<span style="color: #008000;">.</span><span style="color: #0000FF;">OrderID</span> 
		<span style="color: #008000;">+</span> <span style="color: #666666;">&quot;-OrderDate:&quot;</span> 
		<span style="color: #008000;">+</span> t<span style="color: #008000;">.</span><span style="color: #0000FF;">OrderDate</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Value</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;yyyy-MM-dd&quot;</span><span style="color: #008000;">&#41;</span> 
		<span style="color: #008000;">+</span><span style="color: #666666;">&quot;-CustomerName:&quot;</span>
		<span style="color: #008000;">+</span> t<span style="color: #008000;">.</span><span style="color: #0000FF;">Customer</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ContactName</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">foreach</span><span style="color: #008000;">&#40;</span>var m <span style="color: #0600FF; font-weight: bold;">in</span> t<span style="color: #008000;">.</span><span style="color: #0000FF;">Order_Details</span><span style="color: #008000;">&#41;</span>
                Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;ProductID:&quot;</span> 
		<span style="color: #008000;">+</span> m<span style="color: #008000;">.</span><span style="color: #0000FF;">ProductID</span> 
		<span style="color: #008000;">+</span> <span style="color: #666666;">&quot;-Price:&quot;</span> 
		<span style="color: #008000;">+</span> m<span style="color: #008000;">.</span><span style="color: #0000FF;">UnitPrice</span> 
		<span style="color: #008000;">+</span> <span style="color: #666666;">&quot;-Amount:&quot;</span> 
		<span style="color: #008000;">+</span> m<span style="color: #008000;">.</span><span style="color: #0000FF;">Quantity</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>对于我们开发者而言，需要注意的是，对于同一个DataContext实例，DataLoadOptions只能设定一次，并且一旦设定，就无法更改。</p>
<p>接下来，运行程序，看看优化后，程序向数据库服务器请求的的SQL：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p454code16'); return false;">View Code</a> SQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p45416"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code" id="p454code16"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>OrderID<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>CustomerID<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>EmployeeID<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>OrderDate<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>
t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>RequiredDate<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShippedDate<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShipVia<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Freight<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Sh
ipName<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShipAddress<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShipCity<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShipRegion<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShipPosta
lCode<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ShipCountry<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t3<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>OrderID<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>OrderID2<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t3<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ProductID<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t3<span style="color: #66cc66;">&#93;</span>
<span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>UnitPrice<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t3<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Quantity<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t3<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Discount<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span>
    <span style="color: #993333; font-weight: bold;">SELECT</span> COUNT<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #66cc66;">&#91;</span>dbo<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span><span style="color: #993333; font-weight: bold;">Order</span> Details<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>t4<span style="color: #66cc66;">&#93;</span>
    <span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #66cc66;">&#91;</span>t4<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>OrderID<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>OrderID<span style="color: #66cc66;">&#93;</span>
    <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>value<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t2<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>test<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t2<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>CustomerID<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>CustomerID2<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t2<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Company
Name<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t2<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ContactName<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t2<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ContactTitle<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t2<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Address<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t2<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>City<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t2
<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Region<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t2<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>PostalCode<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t2<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Country<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t2<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Phone<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t2<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Fax<span style="color: #66cc66;">&#93;</span>
<span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #66cc66;">&#91;</span>dbo<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Orders<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span>
<span style="color: #993333; font-weight: bold;">LEFT</span> <span style="color: #993333; font-weight: bold;">OUTER</span> <span style="color: #993333; font-weight: bold;">JOIN</span> <span style="color: #66cc66;">&#40;</span>
    <span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>test<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t1<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>CustomerID<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t1<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>CompanyName<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t1<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ContactName
<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t1<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ContactTitle<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t1<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Address<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t1<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>City<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t1<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Region<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t1<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Postal
Code<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t1<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Country<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t1<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Phone<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t1<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Fax<span style="color: #66cc66;">&#93;</span>
    <span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #66cc66;">&#91;</span>dbo<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>Customers<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>t1<span style="color: #66cc66;">&#93;</span>
    <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>t2<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">ON</span> <span style="color: #66cc66;">&#91;</span>t2<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>CustomerID<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>CustomerID<span style="color: #66cc66;">&#93;</span>
<span style="color: #993333; font-weight: bold;">LEFT</span> <span style="color: #993333; font-weight: bold;">OUTER</span> <span style="color: #993333; font-weight: bold;">JOIN</span> <span style="color: #66cc66;">&#91;</span>dbo<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span><span style="color: #993333; font-weight: bold;">Order</span> Details<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>t3<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">ON</span> <span style="color: #66cc66;">&#91;</span>t3<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>OrderID<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>OrderID<span style="color: #66cc66;">&#93;</span>
&nbsp;
<span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>OrderID<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">=</span> @p0
<span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> <span style="color: #66cc66;">&#91;</span>t0<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>OrderID<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t2<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>CustomerID<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>t3<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>ProductID<span style="color: #66cc66;">&#93;</span></pre></td></tr></table></div>

<p>可以看出，之前的分三次向数据库提交sql的情况，现在被程序优化为一条带LEFT JOIN的关联查询，而获取关联数据。三次SQL请求，被优化为一次，从而减少了数据库和网络流量开支，由此看来DataLoadOptions的好处不言而喻。</p>
<h3></h3>
<h3>一点小结</h3>
<p>延迟加载与立即加载，并无孰优孰劣之区别，在某些情况下，需要我们根据自己的需求和实际情况来选择来进行选择。</p>
<p class="announce"><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;">声明:</span> 此Blog中的文章和随笔仅代表作者在某一特定时间内的观点和结论，对其完全的正确不做任何担保或假设 <br /> 本站文章均采用 <a rel="nofollow" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="署名-非商业性使用-相同方式共享">知识共享署名-相同方式共享3.0</a> 协议进行授权，除非注明，本站文章均为原创，转载请注明转自  <a href="http://www.xiaozhou.net">Timothy&#039;s Space</a> 并应以链接形式标明本文地址!</p>]]></content:encoded>
			<wfw:commentRss>http://www.xiaozhou.net/dotnetdevelopment/linq-to-sql-delay-load-and-immediately-load-2009-12-20.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>动态加载并显示图片</title>
		<link>http://www.xiaozhou.net/vcdevelopment/dynamic-loading-and-explicit-pictures-2004-12-22.htm</link>
		<comments>http://www.xiaozhou.net/vcdevelopment/dynamic-loading-and-explicit-pictures-2004-12-22.htm#comments</comments>
		<pubDate>Wed, 22 Dec 2004 13:52:55 +0000</pubDate>
		<dc:creator>Timothy</dc:creator>
				<category><![CDATA[VC开发]]></category>
		<category><![CDATA[display]]></category>
		<category><![CDATA[dynamic]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[picture]]></category>
		<category><![CDATA[加载]]></category>
		<category><![CDATA[动态]]></category>
		<category><![CDATA[图片]]></category>
		<category><![CDATA[显示]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/?p=53</guid>
		<description><![CDATA[HBITMAP hbitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),&#8221;**.bmp&#8221;, IMAGE_BITMAP,0,0, LR_CREATEDIBSECTION&#124;LR_LOADFROMFILE); if(hbitmap==NULL) return FALSE; CBitmap m_bitmap; m_bitmap.Attach(hbitmap); HBITMAP hbitmap; //先用上面的方法动态的装载位图,然后把图片显示到Static控件上 //获得指向静态控件的指针 CStatic *pStatic=(CStatic *)GetDlgItem(IDC_SHOWBMP); //获得位图句柄 HBITMAP Bitmap; //设置静态控件的样式，使其可以使用位图，并试位标显示使居中 pStatic->ModifyStyle(0xF,SS_BITMAP&#124;SS_CENTERIMAGE); //设置静态控件显示位图 pStatic->SetBitmap(hBitmap); 声明: 此Blog中的文章和随笔仅代表作者在某一特定时间内的观点和结论，对其完全的正确不做任何担保或假设 本站文章均采用 知识共享署名-相同方式共享3.0 协议进行授权，除非注明，本站文章均为原创，转载请注明转自 Timothy&#039;s Space 并应以链接形式标明本文地址!]]></description>
			<content:encoded><![CDATA[<p>HBITMAP hbitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),&#8221;**.bmp&#8221;, IMAGE_BITMAP,0,0, LR_CREATEDIBSECTION|LR_LOADFROMFILE);<br />
if(hbitmap==NULL)<br />
return FALSE;<br />
CBitmap m_bitmap;<br />
m_bitmap.Attach(hbitmap);<br />
HBITMAP hbitmap;<br />
//先用上面的方法动态的装载位图,然后把图片显示到Static控件上<br />
//获得指向静态控件的指针<br />
CStatic *pStatic=(CStatic *)GetDlgItem(IDC_SHOWBMP);<br />
//获得位图句柄<br />
HBITMAP Bitmap;<br />
//设置静态控件的样式，使其可以使用位图，并试位标显示使居中<br />
pStatic->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);<br />
//设置静态控件显示位图<br />
pStatic->SetBitmap(hBitmap);</p>
<p class="announce"><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;">声明:</span> 此Blog中的文章和随笔仅代表作者在某一特定时间内的观点和结论，对其完全的正确不做任何担保或假设 <br /> 本站文章均采用 <a rel="nofollow" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="署名-非商业性使用-相同方式共享">知识共享署名-相同方式共享3.0</a> 协议进行授权，除非注明，本站文章均为原创，转载请注明转自  <a href="http://www.xiaozhou.net">Timothy&#039;s Space</a> 并应以链接形式标明本文地址!</p>]]></content:encoded>
			<wfw:commentRss>http://www.xiaozhou.net/vcdevelopment/dynamic-loading-and-explicit-pictures-2004-12-22.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>动态加载位图</title>
		<link>http://www.xiaozhou.net/vcdevelopment/dynamic-loading-a-bitmap-2004-12-20.htm</link>
		<comments>http://www.xiaozhou.net/vcdevelopment/dynamic-loading-a-bitmap-2004-12-20.htm#comments</comments>
		<pubDate>Mon, 20 Dec 2004 08:33:54 +0000</pubDate>
		<dc:creator>Timothy</dc:creator>
				<category><![CDATA[VC开发]]></category>
		<category><![CDATA[bitmap]]></category>
		<category><![CDATA[dynamic]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[位图]]></category>
		<category><![CDATA[加载]]></category>
		<category><![CDATA[动态]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/?p=50</guid>
		<description><![CDATA[void CCreateRandomBMPDlg::OnBtnTest() { // TODO: Add your control notification handler code here HBITMAP hBmp; CFileDialog dlg(TRUE, &#8220;bmp&#8221;, NULL, 0, &#8220;位图文件 (*.bmp)&#124;*.bmp&#124;&#124;&#8221;, this); if (dlg.DoModal() != IDOK) { return; } hBmp = (HBITMAP) LoadImage(NULL, dlg.GetPathName(), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE &#124; LR_CREATEDIBSECTION); if (hBmp == NULL) { return; } BITMAP bm; PBITMAPINFO bmpInf; if (GetObject(hBmp, sizeof(bm), &#038;bm) [...]]]></description>
			<content:encoded><![CDATA[<p>void CCreateRandomBMPDlg::OnBtnTest()<br />
{<br />
	// TODO: Add your control notification handler code here<br />
	HBITMAP hBmp;</p>
<p>	CFileDialog dlg(TRUE, &#8220;bmp&#8221;, NULL, 0, &#8220;位图文件 (*.bmp)|*.bmp||&#8221;, this);</p>
<p>	if (dlg.DoModal() != IDOK)<br />
	{<br />
		return;<br />
	}</p>
<p>	hBmp = (HBITMAP) LoadImage(NULL, dlg.GetPathName(), IMAGE_BITMAP, 0, 0,<br />
						LR_LOADFROMFILE | LR_CREATEDIBSECTION);</p>
<p>	if (hBmp == NULL)<br />
	{<br />
		return;<br />
	}</p>
<p>	BITMAP bm;<br />
	PBITMAPINFO bmpInf;</p>
<p>	if (GetObject(hBmp, sizeof(bm), &#038;bm) == 0)<br />
		return ;</p>
<p>	int nPaletteSize = 0;</p>
<p>	if (bm.bmBitsPixel < 16)<br />
		nPaletteSize = (int) pow(2, bm.bmBitsPixel);</p>
<p>	bmpInf = (PBITMAPINFO) LocalAlloc(LPTR,<br />
							sizeof(BITMAPINFOHEADER) +<br />
							sizeof(RGBQUAD) * nPaletteSize);</p>
<p>	//-----------------------------------------------<br />
	bmpInf->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);<br />
	bmpInf->bmiHeader.biWidth = bm.bmWidth;<br />
	bmpInf->bmiHeader.biHeight = bm.bmHeight;<br />
	bmpInf->bmiHeader.biPlanes = bm.bmPlanes;<br />
	bmpInf->bmiHeader.biBitCount = bm.bmBitsPixel;<br />
	bmpInf->bmiHeader.biCompression = BI_RGB;<br />
	bmpInf->bmiHeader.biSizeImage = (bm.bmWidth + 7) /<br />
		8 * bm.bmHeight * bm.bmBitsPixel;<br />
	bmpInf->bmiHeader.biXPelsPerMeter = 0;<br />
	bmpInf->bmiHeader.biYPelsPerMeter = 0;<br />
	bmpInf->bmiHeader.biClrUsed = 0;<br />
	bmpInf->bmiHeader.biClrImportant = 0;<br />
	//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>	HDC hDC = ::GetWindowDC(NULL);<br />
	if (!::GetDIBits(hDC, hBmp, 0, (WORD) bm.bmHeight, NULL, bmpInf,<br />
			DIB_RGB_COLORS))<br />
	{<br />
		LocalFree(bmpInf);<br />
		::ReleaseDC(NULL, hDC);<br />
		return ;<br />
	}</p>
<p>	void* buf = (void*) new char[bmpInf->bmiHeader.biSizeImage];<br />
	if (buf == NULL)<br />
	{<br />
		::ReleaseDC(NULL, hDC);<br />
		LocalFree(bmpInf);<br />
		return ;<br />
	}</p>
<p>	if (!::GetDIBits(hDC, hBmp, 0, (UINT) bm.bmHeight, buf, bmpInf,<br />
			DIB_RGB_COLORS))<br />
	{<br />
		::ReleaseDC(NULL, hDC);<br />
		del&#101;te[]buf;<br />
		LocalFree(bmpInf);<br />
		return ;<br />
	}</p>
<p>	::ReleaseDC(NULL, hDC);</p>
<p>	CString sMsg;<br />
	sMsg.Format(&#8220;BitsPixel:%d,width:%d,height:%d&#8221;, bm.bmBitsPixel, bm.bmWidth,<br />
			bm.bmHeight);</p>
<p>	AfxMessageBox(sMsg);</p>
<p>	CClientDC dc(this);</p>
<p>	if (bm.bmBitsPixel == <img src='http://www.xiaozhou.net/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> 	{<br />
		BYTE* pData = (BYTE*) buf;</p>
<p>		int nWidth = bm.bmWidth;<br />
		while (nWidth % 4 != 0)<br />
		{<br />
			//Bmp每行数据都是4个字节的整数倍。<br />
			nWidth++;<br />
		}</p>
<p>		for (int i = 0; i < bm.bmHeight; i++)<br />
		{<br />
			for (int j = 0; j < bm.bmWidth; j++)<br />
			{<br />
				RGBQUAD rgbQ;<br />
				rgbQ = bmpInf->bmiColors[pData[i * nWidth + j]];<br />
				dc.SetPixel(j, bm.bmHeight &#8211; i,<br />
					RGB(rgbQ.rgbRed, rgbQ.rgbGreen, rgbQ.rgbBlue));<br />
			}<br />
		}<br />
	}<br />
	else if (bm.bmBitsPixel == 16)<br />
	{<br />
		BYTE* pData = (BYTE*) buf;</p>
<p>		int nWidth = bm.bmWidth*2;<br />
		while (nWidth % 4 != 0)<br />
		{<br />
			nWidth++;<br />
		}</p>
<p>		BYTE red, green, blue;</p>
<p>		for (int i = 0; i < bm.bmHeight; i++)<br />
		{<br />
			for (int j = 0; j < bm.bmWidth; j++)<br />
			{<br />
				blue = pData[i * nWidth + j * 2] &#038; 0x1F;<br />
				green = pData[i * nWidth + j * 2] >> 5;<br />
				green |= (pData[i * nWidth + j * 2 + 1] &#038; 0&#215;03) << 3;<br />
				red = (pData[i * nWidth + j * 2 + 1] >> 2) &#038; 0x1F;</p>
<p>				WORD wRed = red*8;<br />
				WORD wBlue = blue*8;<br />
				WORD wGreen = green*8;</p>
<p>				red = min(255, wRed);<br />
				blue = min(255, wBlue);<br />
				green = min(255, wGreen);</p>
<p>				dc.SetPixel(j, bm.bmHeight &#8211; i, RGB(red, green, blue));<br />
			}<br />
		}<br />
	}<br />
	else if (bm.bmBitsPixel == 24)<br />
	{<br />
		BYTE* pData = (BYTE*) buf;</p>
<p>		int nWidth = bm.bmWidth*3;<br />
		while (nWidth % 4 != 0)<br />
		{<br />
			nWidth++;<br />
		}</p>
<p>		for (int i = 0; i < bm.bmHeight; i++)<br />
		{<br />
			for (int j = 0; j < bm.bmWidth; j++)<br />
			{<br />
				dc.SetPixel(j, bm.bmHeight -<br />
					i,<br />
					RGB(pData[i * nWidth + j * 3 + 2],<br />
						pData[i * nWidth + j * 3 + 1],<br />
						pData[i * nWidth + j * 3]));<br />
			}<br />
		}<br />
	}<br />
	else if (bm.bmBitsPixel == 32)<br />
	{<br />
		BYTE* pData = (BYTE*) buf;</p>
<p>		int nWidth = bm.bmWidth*4;</p>
<p>		for (int i = 0; i < bm.bmHeight; i++)<br />
		{<br />
			for (int j = 0; j < bm.bmWidth; j++)<br />
			{<br />
				dc.SetPixel(j, bm.bmHeight -<br />
					i,<br />
					RGB(pData[i * nWidth + j * 4 + 2],<br />
						pData[i * nWidth + j * 4 + 1],<br />
						pData[i * nWidth + j * 4]));<br />
			}<br />
		}<br />
	}</p>
<p>	del&#101;te[]buf;</p>
<p>	DeleteObject(hBmp);<br />
	LocalFree(bmpInf);<br />
}</p>
<p class="announce"><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;">声明:</span> 此Blog中的文章和随笔仅代表作者在某一特定时间内的观点和结论，对其完全的正确不做任何担保或假设 <br /> 本站文章均采用 <a rel="nofollow" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="署名-非商业性使用-相同方式共享">知识共享署名-相同方式共享3.0</a> 协议进行授权，除非注明，本站文章均为原创，转载请注明转自  <a href="http://www.xiaozhou.net">Timothy&#039;s Space</a> 并应以链接形式标明本文地址!</p>]]></content:encoded>
			<wfw:commentRss>http://www.xiaozhou.net/vcdevelopment/dynamic-loading-a-bitmap-2004-12-20.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>从文件装载图象</title>
		<link>http://www.xiaozhou.net/vcdevelopment/load-images-from-the-file-2004-10-26.htm</link>
		<comments>http://www.xiaozhou.net/vcdevelopment/load-images-from-the-file-2004-10-26.htm#comments</comments>
		<pubDate>Tue, 26 Oct 2004 08:19:12 +0000</pubDate>
		<dc:creator>Timothy</dc:creator>
				<category><![CDATA[VC开发]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[图像]]></category>
		<category><![CDATA[装载]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/?p=38</guid>
		<description><![CDATA[******************************************************************* * 这是从文件里装放位图 * *******************************************************************/ BOOL CXxxView::OnDraw(CDC* pDC) { HBITMAP bitmap,OldBitmap; bitmap = (HBITMAP)LoadImage(NULL,&#8221;xxx.bmp&#8221;,IMAGE_BITMAP, 0,0,LR_LOADFROMFILE&#124;LR_CREATEDIBSECTION); CDC MemDC; MemDC.CreateCompatibleDC(pDC); OldBitmap=(HBITMAP)MemDC.SelectObject(bitmap); pDC->BitBlt(0,0,400,300,&#038;MemDC,0,0,SRCCOPY); MemDC.SelectObject(OldBitmap); return TRUE; } 声明: 此Blog中的文章和随笔仅代表作者在某一特定时间内的观点和结论，对其完全的正确不做任何担保或假设 本站文章均采用 知识共享署名-相同方式共享3.0 协议进行授权，除非注明，本站文章均为原创，转载请注明转自 Timothy&#039;s Space 并应以链接形式标明本文地址!]]></description>
			<content:encoded><![CDATA[<p>*******************************************************************<br />
 * 这是从文件里装放位图<br />
 *<br />
 *******************************************************************/<br />
BOOL CXxxView::OnDraw(CDC* pDC)<br />
{<br />
   HBITMAP bitmap,OldBitmap;<br />
   bitmap = (HBITMAP)LoadImage(NULL,&#8221;xxx.bmp&#8221;,IMAGE_BITMAP,<br />
                           0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);<br />
   CDC MemDC;<br />
   MemDC.CreateCompatibleDC(pDC);<br />
   OldBitmap=(HBITMAP)MemDC.SelectObject(bitmap);<br />
   pDC->BitBlt(0,0,400,300,&#038;MemDC,0,0,SRCCOPY);<br />
   MemDC.SelectObject(OldBitmap);<br />
   return TRUE;<br />
}</p>
<p class="announce"><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;">声明:</span> 此Blog中的文章和随笔仅代表作者在某一特定时间内的观点和结论，对其完全的正确不做任何担保或假设 <br /> 本站文章均采用 <a rel="nofollow" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="署名-非商业性使用-相同方式共享">知识共享署名-相同方式共享3.0</a> 协议进行授权，除非注明，本站文章均为原创，转载请注明转自  <a href="http://www.xiaozhou.net">Timothy&#039;s Space</a> 并应以链接形式标明本文地址!</p>]]></content:encoded>
			<wfw:commentRss>http://www.xiaozhou.net/vcdevelopment/load-images-from-the-file-2004-10-26.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>动态加载DLL</title>
		<link>http://www.xiaozhou.net/vcdevelopment/dynamically-loaded-dll-2004-10-26.htm</link>
		<comments>http://www.xiaozhou.net/vcdevelopment/dynamically-loaded-dll-2004-10-26.htm#comments</comments>
		<pubDate>Tue, 26 Oct 2004 04:16:32 +0000</pubDate>
		<dc:creator>Timothy</dc:creator>
				<category><![CDATA[VC开发]]></category>
		<category><![CDATA[dll]]></category>
		<category><![CDATA[dynamic]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[加载]]></category>
		<category><![CDATA[动态]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/?p=35</guid>
		<description><![CDATA[核心代码片断： void CLoadLibraryTestDlg::OnLoad() { typedef int (WINAPI * MyFun)(HWND,LPCTSTR,LPCTSTR,UINT); MyFun fun=NULL; HINSTANCE hHandle; hHandle=LoadLibrary(&#8220;user32.dll&#8221;); fun=(int (WINAPI *)(HWND,LPCTSTR,LPCTSTR,UINT))::GetProcAddress(hHandle,&#8221;MessageBoxA&#8221;); if(fun!=NULL) { fun(NULL,&#8221;hahahahahahahaha&#8221;,&#8221;success &#8221;,MB_OK); } } 声明: 此Blog中的文章和随笔仅代表作者在某一特定时间内的观点和结论，对其完全的正确不做任何担保或假设 本站文章均采用 知识共享署名-相同方式共享3.0 协议进行授权，除非注明，本站文章均为原创，转载请注明转自 Timothy&#039;s Space 并应以链接形式标明本文地址!]]></description>
			<content:encoded><![CDATA[<p>核心代码片断：</p>
<p>void CLoadLibraryTestDlg::OnLoad()<br />
{<br />
	typedef int (WINAPI * MyFun)(HWND,LPCTSTR,LPCTSTR,UINT);<br />
	MyFun fun=NULL;<br />
	HINSTANCE hHandle;<br />
	hHandle=LoadLibrary(&#8220;user32.dll&#8221;);<br />
	fun=(int (WINAPI *)(HWND,LPCTSTR,LPCTSTR,UINT))::GetProcAddress(hHandle,&#8221;MessageBoxA&#8221;);<br />
	if(fun!=NULL)<br />
	{<br />
		fun(NULL,&#8221;hahahahahahahaha&#8221;,&#8221;success <img src='http://www.xiaozhou.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#8221;,MB_OK);<br />
	}<br />
}</p>
<p class="announce"><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;">声明:</span> 此Blog中的文章和随笔仅代表作者在某一特定时间内的观点和结论，对其完全的正确不做任何担保或假设 <br /> 本站文章均采用 <a rel="nofollow" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="署名-非商业性使用-相同方式共享">知识共享署名-相同方式共享3.0</a> 协议进行授权，除非注明，本站文章均为原创，转载请注明转自  <a href="http://www.xiaozhou.net">Timothy&#039;s Space</a> 并应以链接形式标明本文地址!</p>]]></content:encoded>
			<wfw:commentRss>http://www.xiaozhou.net/vcdevelopment/dynamically-loaded-dll-2004-10-26.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

