<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_The blog of Madream</title><subtitle type="text">坐在松树顶上,看到天上六只直升机排成一行唑洅湾仔頂樓,窗邊菂佬鹰飝翔嗻</subtitle><id>http://feed.cnblogs.com/blog/u/33009/rss</id><updated>2010-04-16T10:58:03Z</updated><author><name>Madream.F</name><uri>http://www.cnblogs.com/Madream/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Madream/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/33009/rss"/><entry><id>http://www.cnblogs.com/Madream/articles/1713838.html</id><title type="text">3.用ASP.NET缓存提高站点性能</title><summary type="text">ASP.NET提供三种主要形式的缓存：页面级输出缓存、用户控件级输出缓存（或称为片段缓存）和缓存API。输出缓存和片段缓存的优点是非常易于实现，在大多数情况下，使用这两种缓存就足够了。而缓存API则提供了额外的灵活性（实际上是相当大的灵活性），可用于在应用程序的每一层利用缓存。本文全面介绍了这三种缓存技术在系统各层中的应用。 　　在ASP.NET提供的许多特性中，缓存支持无疑是我最欣赏的特性，我这...</summary><published>2010-04-16T10:58:00Z</published><updated>2010-04-16T10:58:00Z</updated><author><name>Madream.F</name><uri>http://www.cnblogs.com/Madream/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Madream/articles/1713838.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Madream/articles/1713838.html"/><content type="html">　　ASP.NET提供三种主要形式的缓存：页面级输出缓存、用户控件级输出缓存（或称为片段缓存）和缓存API。输出缓存和片段缓存的优点是非常易于实现，在大多数情况下，使用这两种缓存就足够了。而缓存API则提供了额外的灵活性（实际上是相当大的灵活性），可用于在应用&lt;a  href="http://dev.yesky.com/" target="_blank"&gt;程序&lt;/a&gt;的每一层利用缓存。本文全面介绍了这三种缓存技术在系统各层中的应用。 &lt;br /&gt;&lt;br /&gt;　　在ASP.NET提供的许多特性中，缓存支持无疑是我最欣赏的特性，我这样说当然是有充分理由的。相比ASP.NET的所有其他特性，缓存对应用程序的性能具有最大的潜在影响，利用缓存和其他机制，ASP.NET开发人员可以接受使用开销很大的控件（例如，DataGrid）构建站点时的额外开销，而不必担心性能会受到太大的影响。为了在应用程序中最大程度地利用缓存，您应该考虑在所有程序级别上都实现缓存的方法。&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;Steve的缓存提示&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;　　尽早缓存；经常缓存&lt;br /&gt;&lt;br /&gt;　　您应该在应用程序的每一层都实现缓存。向数据层、业务逻辑层、UI或输出层添加缓存支持。&lt;a  href="http://product.yesky.com/catalog/219/" target="_blank"&gt;内存&lt;/a&gt;现在非常便宜-因此，通过以智能的方式在整个应用程序中实现缓存，可以获得很大的性能提高。&lt;br /&gt;&lt;br /&gt;　　缓存可以防止许多过失&lt;br /&gt;&lt;br /&gt;　　缓存是一种无需大量时间和分析就可以获得&amp;#8220;足够良好的&amp;#8221;性能的方法。这里再次强调，内存现在非常便宜，因此，如果您能通过将输出缓存30秒，而不是花上一整天甚至一周的时间尝试优化代码或数据库就可以获得所需的性能，您肯定会选择缓存解决方案（假设可以接受30秒的旧数据）。缓存正是那些利用20%付出获得80%回报的特性之一，因此，要提高性能，应该首先想到缓存。不过，如果&lt;a  href="http://design.yesky.com/" target="_blank"&gt;设计&lt;/a&gt;很糟糕，最终却有可能带来不良的后果，因此，您当然也应该尽量正确地设计应用程序。但如果您只是需要立即获得足够高的性能，缓存就是您的最佳选择，您可以在以后有时间的时候再重新设计应用程序。&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;页面级输出缓存&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;　　作为最简单的缓存形式，输出缓存只是在内存中保留为响应请求而发送的HTML的副本。其后再有请求时将提供缓存的输出，直到缓存到期，这样，性能有可能得到很大的提高（取决于需要多少开销来创建原始页面输出-发送缓存的输出总是很快，并且比较稳定）。&lt;br /&gt;&lt;br /&gt;　　实现&lt;br /&gt;&lt;br /&gt;　　要实现页面输出缓存，只要将一条OutputCache指令添加到页面即可。&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;＜%@ OutputCache Duration="60" VaryByParam="*" %＞&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;　　如同其他页面指令一样，该指令应该出现在ASPX页面的顶部，即在任何输出之前。它支持五个属性（或参数），其中两个是必需的。&lt;br /&gt;&lt;br /&gt;　　Duration 必需属性。页面应该被缓存的时间，以秒为单位。必须是正整数。 &lt;br /&gt;&lt;br /&gt;　　Location 指定应该对输出进行缓存的位置。如果要指定该参数，则必须是下列选项之一：Any、Client、Downstream、None、Server或ServerAndClient。&lt;br /&gt;&lt;br /&gt;　　VaryByParam 必需属性。Request中变量的名称，这些变量名应该产生单独的缓存条目。&amp;#8220;none&amp;#8221;表示没有变动。&amp;#8220;*&amp;#8221;可用于为每个不同的变量数组创建新的缓存条目。变量之间用&amp;#8220;;&amp;#8221;进行分隔。&lt;br /&gt;&lt;br /&gt;　　VaryByHeader 基于指定的标头中的变动改变缓存条目。&lt;br /&gt;&lt;br /&gt;　　VaryByCustom 允许在global.asax中指定自定义变动（例如，&amp;#8220;Browser&amp;#8221;）。&lt;br /&gt;&lt;br /&gt;　　利用必需的Duration和VaryByParam选项的组合可以处理大多数情况。例如，如果您的产品目录允许用户基于categoryID和页变量查看目录页，您可以用参数值为&amp;#8220;categoryID;page&amp;#8221;的VaryByParam将产品目录缓存一段时间（如果产品不是随时都在改变，一小时还是可以接受的，因此，持续时间是3600秒）。这将为每个种类的每个目录页创建单独的缓存条目。每个条目从其第一个请求算起将维持一个小时。&lt;br /&gt;VaryByHeader和VaryByCustom主要用于根据访问页面的客户端对页面的外观或内容进行自定义。同一个URL可能需要同时为浏览器和移动电话客户端呈现输出，因此，需要针对不同的客户端缓存不同的内容版本。或者，页面有可能已经针对IE进行了优化，针对Netscape或Opera则应取消这种优化功能。后一个例子非常普遍，我们将提供一个说明如何实现此目标的示例：&lt;br /&gt;&lt;br /&gt;　　示例：VaryByCustom用于支持浏览器自定义&lt;br /&gt;&lt;br /&gt;　　为了使每个浏览器都具有单独的缓存条目，VaryByCustom的值可以设置为&amp;#8220;browser&amp;#8221;。此功能已经内置在缓存模块中，并且将针对每个浏览器名称和主要版本插入单独的页面缓存版本。&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;＜%@ OutputCache Duration="60" VaryByParam="None" VaryByCustom="browser"%＞&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;　　&lt;strong&gt;片段缓存，用户控件输出缓存&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;　　缓存整个页面通常并不可行，因为页面的某些部分是针对用户定制的。不过，页面的其他部分是整个应用程序共有的。这些部分最适合使用片段缓存和用户控件进行缓存。此外，菜单和其他布局元素，尤其是那些从数据源动态生成的元素，也可以用这种方法进行缓存。&lt;br /&gt;&lt;br /&gt;　　如果需要，可以按以下条件选择需要缓存的控件：&lt;br /&gt;&lt;br /&gt;　　（1）某控件的属性已改变&lt;br /&gt;&lt;br /&gt;　　（2）由页面级输出缓存所支持的任何一种页面或控件状态改变&lt;br /&gt;&lt;br /&gt;　　一旦对某些控件进行了缓存，使用它们的几百个页面就可以共享这些控件，而不再需要为每个页面保留单独的控件缓存版本。&lt;br /&gt;&lt;br /&gt;　　实现&lt;br /&gt;&lt;br /&gt;　　片段缓存使用的语法与页面级输出缓存一样，但其应用于用户控件（.ascx文件）而不是Web窗体（.aspx文件）。除了Location属性，对于OutputCache在Web窗体上支持的所有属性，用户控件也同样支持。用户控件还支持名为VaryByControl的OutputCache属性，该属性将根据用户控件（通常是页面上的控件，例如，DropDownList）的成员的值改变该控件的缓存。如果指定了VaryByControl，可以省略VaryByParam。最后，在默认情况下，对每个页面上的每个用户控件都单独进行缓存。不过，如果一个用户控件不随应用程序中的页面改变，并且在所有页面都使用相同的名称，则可以设置参数Shared的值为&amp;#8220;true&amp;#8221;，该参数将使用户控件的缓存版本供引用该控件的所有页面使用。&lt;br /&gt;&lt;br /&gt;　　示例&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;＜%@ OutputCache Duration="60" VaryByParam="*" %＞&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;　　该示例将缓存用户控件60秒，并且将针对查询字符串的每个变动、针对此控件所在的每个页面创建单独的缓存条目。&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;＜%@ OutputCache Duration="60" VaryByParam="none" &lt;br /&gt;VaryByControl="CategoryDropDownList" %＞&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;　　该示例将缓存用户控件60秒，并且将针对CategoryDrop&lt;br /&gt;&lt;br /&gt;　　DownList控件的每个不同的值、针对此控件所在的每个页面创建单独的缓存条目。&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;＜%@ OutputCache Duration="60" VaryByParam="none" VaryByCustom="browser" &lt;br /&gt;Shared="true" %＞&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;p&gt;&lt;br /&gt;　　最后，该示例将缓存用户控件60秒，并且将针对每个浏览器名称和主要版本创建一个缓存条目。然后，每个浏览器的缓存条目将由引用此用户控件的所有页面共享（只要所有页面都用相同的ID引用该控件即可）。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div  id="__ad3"&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&lt;span id="contentAdv"&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;strong&gt;缓存API，使用Cache对象&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;　　页面级和用户控件级输出缓存的确是一种可以迅速而简便地提高站点性能的方法，但是在ASP.NET中，缓存的真正灵活性和强大功能是通过Cache对象提供的。使用Cache对象，您可以存储任何可序列化的数据对象，基于一个或多个依赖项的组合来控制缓存条目到期的方式。这些依赖项可以包括自从某对象被缓存后经过的时间、自从某对象上次被访问后经过的时间、对文件或文件夹的更改以及对其他缓存对象的更改，在略作处理后还可以包括对数据库中特定表的更改。&lt;br /&gt;&lt;br /&gt;　　在Cache中存储数据&lt;br /&gt;&lt;br /&gt;　　在Cache中存储数据的最简单的方法就是使用一个键为其赋值，就像HashTable或Dictionary对象一样：&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;Cache["key"] = "value";&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;　　这种做法将在缓存中存储项，同时不带任何依赖项，因此它不会到期，除非缓存引擎为了给其他缓存数据提供空间而将其删除。要包括特定的缓存依赖项，可使用Add()或Insert()方法。其中每个方法都有几个重载。Add()和Insert()之间的唯一区别是，Add()返回对已缓存对象的引用，而Insert()没有返回值（在C#中为空，在VB中为Sub）。&lt;br /&gt;&lt;br /&gt;　　示例&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;Cache.Insert("key", myXMLFileData, new &lt;br /&gt;System.Web.Caching.CacheDependency(Server.MapPath("users.xml")));&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;　　该示例可将文件中的xml数据插入缓存，无需在以后请求时从文件读取。CacheDependency的作用是确保缓存在文件更改后立即到期，以便可以从文件中提取最新数据，重新进行缓存。如果缓存的数据来自若干个文件，还可以指定一个文件名的数组。&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;Cache.Insert("dependentkey", myDependentData, new &lt;br /&gt;System.Web.Caching.CacheDependency(new string[] {}, new string[] &lt;br /&gt;{"key"}));&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;　　该示例可插入键值为&amp;#8220;key&amp;#8221;的第二个数据块（取决于是否存在第一个数据块）。如果缓存中不存在名为&amp;#8220;key&amp;#8221;的键，或者如果与该键相关联的对象已到期或被更新，则&amp;#8220;dependentkey&amp;#8221;的缓存条目将到期。&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;Cache.Insert("key", myTimeSensitiveData, null, &lt;br /&gt;DateTime.Now.AddMinutes(1), TimeSpan.Zero);&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;　　绝对到期：此示例将对受时间影响的数据缓存一分钟，一分钟过后，缓存将到期。注意，绝对到期和滚动到期（见下文）不能一起使用。&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;Cache.Insert("key", myFrequentlyAccessedData, null, &lt;br /&gt;System.Web.Caching.Cache.NoAbsoluteExpiration, &lt;br /&gt;TimeSpan.FromMinutes(1));&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;　　动态滚动到期：此示例将缓存一些频繁使用的数据。数据将在缓存中一直保留下去，除非数据未被引用的时间达到了一分钟。注意，动态滚动到期和绝对到期不能一起使用。&lt;br /&gt;&lt;br /&gt;　　更多选项&lt;br /&gt;&lt;br /&gt;　　除了上面提到的依赖项，我们还可以指定项的优先级（依次为low、high、NotRemovable，它们是在System.Web.Caching.CacheItemPriority枚举中定义的）以及当缓存中的对象到期时调用的CacheItemRemovedCallback函数。大多数时候，默认的优先级已经足够了-缓存引擎可以正常完成任务并处理缓存的内存管理。CacheItemRemovedCallback选项考虑到一些很有趣的可能性，但实际上它很少使用。不过，为了说明该方法，我将提供它的一个使用示例：&lt;br /&gt;&lt;br /&gt;　　CacheItemRemovedCallback示例&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;System.Web.Caching.CacheItemRemovedCallback callback = new System.Web.Caching.CacheItemRemovedCallback (OnRemove);&lt;br /&gt;Cache.Insert("key",myFile,null, &lt;br /&gt;　System.Web.Caching.Cache.NoAbsoluteExpiration, &lt;br /&gt;　TimeSpan.Zero, &lt;br /&gt;　System.Web.Caching.CacheItemPriority.Default, callback);&lt;br /&gt;. . .&lt;br /&gt;public static void OnRemove(string key, object cacheItem, &lt;br /&gt;　System.Web.Caching.CacheItemRemovedReason reason)&lt;br /&gt;{&lt;br /&gt;　AppendLog("The cached value with key '" + key + &lt;br /&gt;"' was removed from the cache. Reason: " + &lt;br /&gt;　reason.ToString()); &lt;br /&gt;}&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;　　该示例将使用AppendLog()方法中定义的任何逻辑来记录缓存中的数据到期的原因。通过在从缓存中删除项时记录这些项并记录删除的原因，您可以确定是否在有效地使用缓存或者您是否可能需要增加&lt;a  href="http://product.yesky.com/catalog/850/" target="_blank"&gt;服务器&lt;/a&gt;上的内存。注意，callback是一个静态（在VB中为Shared）方法，建议使用该方法的原因是，如果不使用它，保存回调函数的类的实例将保留在内存中，以支持回调（对static/Shared方法则没有必要）。&lt;br /&gt;&lt;br /&gt;　　该特性有一个潜在的用处-在后台刷新缓存的数据，这样用户永远都不必等待数据被填充，但数据始终保持相对较新的状态。但实际上，此特性并不适用于当前版本的缓存API，因为在从缓存中删除缓存的项之前，不触发或不完成回调。因此，用户将频繁地发出尝试访问缓存值的请求，然后发现缓存值为空，不得不等待缓存值的重新填充。我希望在未来的ASP.NET版本中看到一个附加的回调，可以称为CachedItemExpiredBut&lt;br /&gt;&lt;br /&gt;　　NotRemovedCallback，如果定义了该回调，则必须在删除缓存项之前完成执行。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Madream/aggbug/1713838.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Madream/articles/1713838.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Madream/articles/1713836.html</id><title type="text">2.ASP.NET性能提升之站点部署与内容传输</title><summary type="text">在将站点部署和到产品服务器之前，如果你正在使用ASP.NET 2.0 Membership Provider，你应该对你的web.config文件做一些调整: 第一篇：ASP.NET性能提升秘诀之管道与进程优化 在Profile Provider中添加applicationname特性。如果你不这里添加一个具体的名称，Profile provider将使用一个GUID。因此，你在的本地机器上，你将...</summary><published>2010-04-16T10:53:00Z</published><updated>2010-04-16T10:53:00Z</updated><author><name>Madream.F</name><uri>http://www.cnblogs.com/Madream/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Madream/articles/1713836.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Madream/articles/1713836.html"/><content type="html">在将站点部署和到产品&lt;a title="服务器" style="color: #000000" href="http://server.it168.com/" target="_blank"&gt;服务器&lt;/a&gt;之前，如果你正在使用ASP.NET 2.0 Membership Provider，你应该对你的web.config文件做一些调整:&lt;br /&gt;&lt;br /&gt;&amp;nbsp; 第一篇：&lt;a href="http://tech.it168.com/a2009/0223/266/000000266366.shtml" target="_blank"&gt;&lt;span style="color: #0000ff"&gt;ASP.NET性能提升秘诀之管道与进程优化&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp; 在Profile Provider中添加applicationname特性。如果你不这里添加一个具体的名称，Profile provider将使用一个GUID。因此，你在的本地机器上，你将有一个GUID并且在产品&lt;a title="服务器" style="color: #000000" href="http://product.it168.com/files/0402search.shtml" target="_blank"&gt;服务器&lt;/a&gt;上你将有另一个GUID。如果你将本地数据库拷贝到产品服务器上，则在本地数据库中你将不能够重用这些记录并且ASP.NET将在产品服务器上创建一个新的应用程序。下面就是你需要添加的内容: &#xD;
&lt;div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt;background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;profile &lt;/span&gt;&lt;span style="color: #ff0000"&gt;enabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="true"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;providers&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;clear &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add &lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="..."&lt;/span&gt;&lt;span style="color: #ff0000"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="System.Web.Profile.SqlProfileProvider"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;connectionStringName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="..."&lt;/span&gt;&lt;span style="color: #ff0000"&gt; applicationName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="YourApplicationName"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;description&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="..."&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;providers&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;无论一个页面得到请求什么时候完成，Profile provider都将自动保存Profile信息。因此，这可能会导致一些不必要的结果，就是更新了具有重大性能损失的数据库。因此，关掉这个自动保存功能并在代码中显式使用Profile.Save()方法。&lt;br /&gt;&amp;lt;profile enabled="true" automaticSaveEnabled="false" &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; 角色管理会一直查询数据库以便获得用户的角色。这样会有很大的性能损失。虽然你可以让角色管理器缓存这些角色信息到一个cookie中来避免。但是这会导致用户没有足够的权限去工作，因为cookie的最大&lt;a title="存储" style="color: #000000" href="http://storage.it168.com/" target="_blank"&gt;存储&lt;/a&gt;量为2KB。因此，你可以&lt;a title="安全" style="color: #000000" href="http://safe.it168.com/" target="_blank"&gt;安全&lt;/a&gt;地存储角色信息到一个cookie中并且在每次请求到*.aspx 和*.asmx.时保存到数据库中。&lt;/p&gt;&#xD;
&lt;div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt;background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;roleManager &lt;/span&gt;&lt;span style="color: #ff0000"&gt;enabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="true"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; cacheRolesInCookie&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="true"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;上面三个设置都必须要求站点具有高容量。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;内容传输&lt;a title="网络" style="color: #000000" href="http://net.it168.com/" target="_blank"&gt;网络&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp; 每个请求从浏览器到你的服务器都会通过覆盖世界各地的骨干网络。跨越很多国家、大陆、海洋的到达你服务器的请求会变得很慢。例如，如果你在美国有多服务器并且有人从澳大利亚浏览你的 站点，这样每个请求都会从地球的一端到另一端再到达你的服务器然后再返回到浏览器上。&lt;/p&gt;&#xD;
&lt;p&gt;如果你的站点包涵有大量的静态文件诸如图片、CSS、JavaScript等；为它们单独发送请求并下载它们将会花费大量的时间。如果你能够在澳大利亚配置一台服务器并重定向用户到你的澳大利亚服务器，那么每个请求相对于发送到美国来说几乎影响很小。不仅是网络延迟将降低，而且数据传输速度将更快，从而静态内容下载也快得多。&lt;/p&gt;&#xD;
&lt;p&gt;如果你的网站以静态内容为主的花，这将对用户来说有足够的性能提升。此外，针对国家范围的网络相比于互联网而言，ISPs提供了更快的速度，因为每个国家一般都有少数部分连接到了骨干网中，这些骨干网由同一国家的多个ISPs进行共享。结果，用户有4兆的带宽连接将从相同国家的服务器上获得整整4兆的速度。但是在国外它们从服务器上获得的速度又会降低到512KB。因此，在同一国家有一台服务器将大大提高站点的下载速度和响应速度。&lt;/p&gt;&#xD;
&lt;p&gt;除了提高站点的加载速度以外，CDN也会从你的网站服务器上减少流量。因为它涉及静态缓存内容，你的网站服务器会很少访问到这些内容。因此，你的访问将大大减少网站服务器的点击并且网站服务器就可以腾出更多的资源来处理动态请求。你的网站服务器也节省了大量的IIS日志空间，因为IIS对于静态内容不需要进行日志请求。如果在你的网站上有很多图片、CSS、以及JavaScript，那么每天你就可以保存上GB的IIS日志。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://image4.it168.com/2009/3/2/67e0071c-15cd-419f-986f-601c05ff72e2.jpg" border="0" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;上面的数字展示了位于华盛顿特区的&lt;a href="http://www.pageflakes.com/" target="_blank"&gt;&lt;font color="#014ee9"&gt;www.pageflakes.com&lt;/font&gt;&lt;/a&gt;站点的平均响应时间，那里的&lt;a title="服务器" style="color: #000000" href="http://server.it168.com/" target="_blank"&gt;服务器&lt;/a&gt;位于得克萨斯州的达拉斯。其平均响应时间大约为4秒。该响应也包括了&lt;a title="服务器" style="color: #000000" href="http://product.it168.com/files/0402search.shtml" target="_blank"&gt;服务器&lt;/a&gt;端的执行时间。一般来说在服务器上会花费大约0.3到0.35秒的时间来执行页面。因此，花费在&lt;a title="网络" style="color: #000000" href="http://net.it168.com/" target="_blank"&gt;网络&lt;/a&gt;上的时间大概是0.05秒或者50毫秒。这已经是一个非常快的速度了，因为只有4到6个点就可以从华盛顿特区到达达拉斯。&lt;br /&gt;&lt;br /&gt;&lt;img alt="" src="http://image4.it168.com/2009/3/2/21d713fa-0909-4e72-9e4e-9aa4877ad125.jpg" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; 这一数字展示了来自澳大利亚，悉尼的平均响应时间。平均响应时间是1.5秒，这明显高于华盛顿。与美国相比几乎相差四倍。大约仅仅只有1.2秒的网络开销。此外，从悉尼到达拉斯大约只有17到23个点。因此，相比于在美国的任何地方，从澳大利亚的站点下载速度至少要慢四倍之多。&lt;br /&gt;&lt;br /&gt;&amp;nbsp; 内容传递网络（CDN）一个跨越互联网的系统计算机网络。计算机之间透明地为终端用户传递内容（尤其是大型媒体内容）。CDN节点（在指定位置的服务器集群）被部署在多个位置，常常会跨越多个骨干网络。这些节点彼此相互协作为终端用户发出的内容请求作出回应。它们也透明地将内容移动到后台并优化传递过程。CDN服务器请求会智能的选择最近的服务器。它会在你的计算机和你所寻找内容的最近节点之间建立快速链接。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在不同国家的节点数量以及一些冗余骨干&lt;a title="网络" style="color: #000000" href="http://net.it168.com/" target="_blank"&gt;网络&lt;/a&gt;的数量链接到一个CDN时其效果都不一样。一些受欢迎的CDNs有Akamai、 Limelight、EdgeCast。Akamai被很多大公司使用诸如：微软、雅虎、AOL等。一般来说，这是一个比较昂贵的解决方案。然而，Akamai提供的&lt;a title="服务器" style="color: #000000" href="http://server.it168.com/" target="_blank"&gt;服务器&lt;/a&gt;在全球都是最佳的，因为它们在世界上很多著名的城市都有&lt;a title="服务器" style="color: #000000" href="http://product.it168.com/files/0402search.shtml" target="_blank"&gt;服务器&lt;/a&gt;。此外，Akamai的服务费用也非常贵，他们只接受能够每个月最少花费5千加币在CDN服务上的客户。对于一些小公司，Edgecast是一个更合理的解决方案。&lt;br /&gt;&lt;br /&gt;&lt;img alt="" src="http://image4.it168.com/2009/3/2/61800220-f4f2-4f08-98f5-f164044df3e5.jpg" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; 这个数字展示了与浏览器拦截流量和服务器响应最近的节点。如果在缓存中没有响应，它会使用一条更快的路线以及相比于浏览器的ISP所能提供的最优化链接从源服务器上去抓取数据。如果该内容已经缓存，那么会直接从节点上提取数据而不需要在从源服务器上。&lt;/p&gt;&#xD;
&lt;p&gt;一般来说，会有两种类型的CDNs。一种是通过FTP的方式将内容上传到CDN的服务器上，这种方式你可以在它们的服务器上获得一个子域诸如dropthings.somecdn.net这种形式。你可以从CDN域改变站点上所有的静态内容URL来下载内容而不是指向你自己域的相对URL。因此，一个像/logo.Gif这样的URL会被重命名为&lt;a href="http://dropthings.somecdn.net/logo.gif" target="_blank"&gt;&lt;font color="#014ee9"&gt;http://dropthings.somecdn.net/logo.gif&lt;/font&gt;&lt;/a&gt;。虽然这种方式很容易配置，但是会出现维护问题。你将不得不一直保持CDN的文件的异步&lt;a title="存储" style="color: #000000" href="http://storage.it168.com/" target="_blank"&gt;存储&lt;/a&gt;。部署会变得十分复杂，因为你需要同时更新你的网站和CDN存储。这种类型的CDN（这种类型费用很便宜）的一个例子就是Cachefly。&lt;/p&gt;&#xD;
&lt;p&gt;在你自己站点上存储静态内容还有一个更加简便的方法，但是需要使用域别名。你可以在一个指向你自己域诸如.dropthings.com的子域中来存储你的内容。然后你再使用CNAME来将子域映射到一个像cache.somecdn.net这样的CDN服务器上。当浏览器试图解析static.dropthigns.com域名时，DNS会通过CDN命名服务器查找请求。然后命名服务器返回一个离你最近并能提供最快下载性能的CDN节点的IP。然后，浏览器为文件发送请求到CDN节点上。&lt;/p&gt;&#xD;
&lt;p&gt;当CDN节点看到这些请求时，它会检查这些内容是否已经进行了缓存。如果缓存了，它会直接从本地存储中读取内容。如果没有，会发出一个到服务器的请求，然后查看在响应中产生的缓存头。根据缓存头，系统会决定将响应缓存多长时间。同时，浏览器不会等待CDN节点来获得内容并返回它。CDN在互联网骨干网络上做了一个有趣的技巧是将请求路由到源服务器以便浏览器直接从源服务器获得响应，而CDN却一直在更新缓存。有时候CDN扮演了一个代理的角色，截取每个请求然后使用一个更快的路由和经过优化的链接到源服务器的方式从源服务器上抓取未缓存的内容。这种CDN类型的例子是Edgecast。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Madream/aggbug/1713836.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Madream/articles/1713836.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Madream/articles/1713834.html</id><title type="text">1.ASP.NET性能提升秘诀之管道与进程优化</title><summary type="text">ASP.NET 2.0中包涵了很多秘密，当你发现它时，可以为你的程序带来更大的性能和扩展性提升。例如，了解了在Membership和Profile provider提供程序中所隐藏的秘密瓶颈后就可以方便地的解决验证问题并使得授权操作的速度加快。 第二篇：ASP.NET性能提升之站点部署与内容传输  另外，ASP.NET HTTP管道为了避免针对每次请求所要执行的必要代码而发生阻塞。不仅那样，ASP...</summary><published>2010-04-16T10:49:00Z</published><updated>2010-04-16T10:49:00Z</updated><author><name>Madream.F</name><uri>http://www.cnblogs.com/Madream/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Madream/articles/1713834.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Madream/articles/1713834.html"/><content type="html">ASP.NET 2.0中包涵了很多秘密，当你发现它时，可以为你的程序带来更大的性能和扩展性提升。例如，了解了在Membership和Profile provider提供程序中所隐藏的秘密瓶颈后就可以方便地的解决验证问题并使得授权操作的速度加快。&lt;br /&gt;&lt;br /&gt;&amp;nbsp; 第二篇：&lt;a title="ASP.NET性能提升之站点部署与内容传输" href="http://publish.itpub.net/a2009/0302/267/000000267279.shtml" target="_blank"&gt;&lt;span style="color: #0000ff"&gt;ASP.NET性能提升之站点部署与内容传输&lt;/span&gt;&lt;/a&gt; &#xD;
&lt;p&gt;另外，ASP.NET HTTP管道为了避免针对每次请求所要执行的必要代码而发生阻塞。不仅那样，ASP.NET工作者进程能够推动其限制而获得更高的性能。页面碎片在浏览器端的输出缓存（不是在&lt;a title="服务器" style="color: #000000" href="http://server.it168.com/" target="_blank"&gt;服务器&lt;/a&gt;端）可以显著节约回访者的下载时间。按需求的用户界面下载可以让你的站点给人快速流畅的感觉。&lt;/p&gt;&#xD;
&lt;p&gt;最后内容传输&lt;a title="网络" style="color: #000000" href="http://net.it168.com/" target="_blank"&gt;网络&lt;/a&gt;和HTTP缓存头的恰当使用可以让你的网站惊人的快速。在这篇文章中，你将学习到这些技术，它能够使你的ASP.NET应用程序获得更高的性能、更好的扩展性&amp;nbsp;，并且可以在任何ASP.NET的网站上实现，尤其是那些应用了ASP.NET 2.0 Membership 和Profile provider的站点。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;strong&gt; ASP.NET管道优化&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; 位于请求管道中的很多ASP.NET默认的HttpModules用于拦截客户端所发出的每个请求。例如，SessionStateModule拦截每个请求，并解析对应的会话cookie，然后在HttpContext中加载适当的会话。实时证明，并不是所有的modules都是必要的。&lt;/p&gt;&#xD;
&lt;p&gt;例如，如果你不使用Membership和Profile provider提供程序，那么你就可以不需要FormsAuthentication module。如果你需要为你的用户使用Windows验证，那么你就可以不需要WindowsAuthentication。位于管道中的这些modules仅仅在每次请求到来时执行一些不必要的代码。&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; 默认的modules都定义在了machine.config文件中（位于$WINDOWS$\Microsoft.NET\Framework\$VERSION$\CONFIG目录下）。&lt;/p&gt;&#xD;
&lt;div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt;background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid"&gt;&#xD;
&lt;div&gt;&lt;!--{123535328491113}--&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;httpModules&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add &lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="OutputCache"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="System.Web.Caching.OutputCacheModule"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add &lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Session"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="System.Web.SessionState.SessionStateModule"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add &lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="WindowsAuthentication"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="System.Web.Security.WindowsAuthenticationModule"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add &lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="FormsAuthentication"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="System.Web.Security.FormsAuthenticationModule"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add &lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="PassportAuthentication"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="System.Web.Security.PassportAuthenticationModule"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add &lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="UrlAuthorization"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="System.Web.Security.UrlAuthorizationModule"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add &lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="FileAuthorization"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="System.Web.Security.FileAuthorizationModule"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add &lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="ErrorHandlerModule"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="System.Web.Mobile.ErrorHandlerModule, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Web.Mobile, Version=1.0.5000.0, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;httpModules&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;你可以通过在站点的web.config文件中添加&amp;lt;remove&amp;gt;节点到你的网站应用程序中来删除这些默认的modules。例如：&lt;/p&gt;&#xD;
&lt;div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt;background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid"&gt;&#xD;
&lt;div&gt;&lt;!--{123535328491114}--&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;httpModules&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt; Remove unnecessary Http Modules for faster pipeline &lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;remove &lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Session"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;remove &lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="WindowsAuthentication"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;remove &lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="PassportAuthentication"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;remove &lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AnonymousIdentification"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;remove &lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="UrlAuthorization"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;remove &lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="FileAuthorization"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;httpModules&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;上面的配置对于使用了数据库并基于Forms验证的网站来说非常适合，它们并不需要任何会话的支持。因此，所有这些modules都可以&lt;a title="安全" style="color: #000000" href="http://safe.it168.com/" target="_blank"&gt;安全&lt;/a&gt;的删除&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;ASP.NET 进程配置优化&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;ASP.NET进程模型配置定义了一些进程级别的属性，像ASP.NET使用的线程数量、超时前阻止线程花费了多长时间、多少请求在继续等待IO工作完成等等。默认情况下，很多方面都具有太多的限制。当今，硬件已经变得十分便宜了，即使是采用双核多GB的RAM&lt;a title="服务器" style="color: #000000" href="http://server.it168.com/" target="_blank"&gt;服务器&lt;/a&gt;也变得非常平常的选择了。&lt;/p&gt;&#xD;
&lt;p&gt;因此，进程模型配置能够减少ASP.NET进程消耗更多的系统资源并提供为每台&lt;a title="服务器" style="color: #000000" href="http://product.it168.com/files/0402search.shtml" target="_blank"&gt;服务器&lt;/a&gt;提供更好的扩展性。&lt;/p&gt;&#xD;
&lt;p&gt;执行一次规则的ASP.NET安装将会在machine.config文件中创建如下配置的节点：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt;background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid"&gt;&#xD;
&lt;div&gt;&lt;!--{123535328491115}--&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;system.web&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;processModel &lt;/span&gt;&lt;span style="color: #ff0000"&gt;autoConfig&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="true"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;你需要减少这种自动配置并针对不同的特性使用一些特定的值以便自定义ASP.NET工作者进程的工作方式。例如：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt;background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid"&gt;&#xD;
&lt;div&gt;&lt;!--{123535328491116}--&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;processModel &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;enable&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="true"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; timeout&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Infinite"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; idleTimeout&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Infinite"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; shutdownTimeout&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="00:00:05"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; requestLimit&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Infinite"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; requestQueueLimit&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="5000"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; restartQueueLimit&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="10"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; memoryLimit&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="60"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; webGarden&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="false"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; cpuMask&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="0xffffffff"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; userName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="machine"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; password&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AutoGenerate"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; logLevel&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Errors"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; clientConnectedCheck&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="00:00:05"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; comAuthenticationLevel&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Connect"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; comImpersonationLevel&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Impersonate"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; responseDeadlockInterval&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="00:03:00"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; responseRestartDeadlockInterval&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="00:03:00"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; autoConfig&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="false"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; maxWorkerThreads&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="100"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; maxIoThreads&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="100"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; minWorkerThreads&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="40"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; minIoThreads&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="30"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; serverErrorMessageFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=""&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; pingFrequency&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Infinite"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; pingTimeout&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Infinite"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; asyncOption&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="20"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; maxAppDomains&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="2000"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;除了下面几个不为默认值以外，其余均为系统默认值：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&amp;nbsp; maxWorkerThreads&amp;nbsp;&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp; 每次处理默认为20，在一台双核的计算机上，ASP.NET的处理就需要40了。这意味着ASP.NET在一台并行的双核&lt;a title="服务器" style="color: #000000" href="http://server.it168.com/" target="_blank"&gt;服务器&lt;/a&gt;上可以每次处理40个请求。我将数量增加到100以便为ASP.NET的每次处理提供更多的线程。如果你有一个应用程序，它的&lt;a title="CPU" style="color: #000000" href="http://product.it168.com/list/b/0217_1.shtml" target="_blank"&gt;CPU&lt;/a&gt;处理能力并不是很强但是它却能够每秒更容易地处理多个请求，那么你就可以增加这个值。&lt;/p&gt;&#xD;
&lt;p&gt;尤其是你的Web应用程序使用了大量的Web服务调用或者下载/上传了很多不会对CPU产生压力的数据时。当ASP.NET用完这些工作者线程时，它会停止出来发来的多个请求。此时请求会放置到一个队列中并持续等待直到出现一个空闲的工作者线程。通常到你的站点开始接受超过预期的点击时会发生这样的情况。那样的话，如果你需要节省CPU的使用，可以增加每次处理的工作者线程数来达到目的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&amp;nbsp; maxIOThreads&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/strong&gt;&amp;nbsp; 每次处理默认为20，在一台双核的计算机上，ASP.NET进行的I/O操作就需要40个线程了。这意味着ASP.NET在一台并行的双核&lt;a title="服务器" style="color: #000000" href="http://product.it168.com/files/0402search.shtml" target="_blank"&gt;服务器&lt;/a&gt;上可以每次处理40个I/O请求。I/O请求能够进行的文件读/写、数据库操作、web服务调用、从Web 应用程序中产生的HTTP请求等等。因此，如果你的服务器有足够的系统资源来处理更多的I/O请求，你可以将该值设置为100。特别是当你的Web应用程序在并行模式下进行下载/上传数据、调用很多外部Web服务时，非常有用。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&amp;nbsp; minWorkerThreads&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp; 当空闲的ASP.NET工作者线程数量低于这个数字时，ASP.NET就会开始将这些发来的请求推入队列中。因此，你可以为改值设定一个较低的值以便可以增加当前请求的数量。此外，建议不要将该值设置得过低，因为Web应用程序的代码可能需要做一些后台处理和并行处理，此时会需要更多的空闲工作者线程支持。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&amp;nbsp; minIOThreads&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp; 除了它是针对I/O线程以外，其它与minWorkerThreads的方式相同。然而你可以将该值设置得比minWorkerThreads还低。因为就I/O线程而言，这里不会发生并行处理的问题。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&amp;nbsp; memoryLimit&lt;/strong&gt;&lt;br /&gt;&amp;nbsp; 指定&lt;a title="内存" style="color: #000000" href="http://product.it168.com/list/b/0205_1.shtml" target="_blank"&gt;内存&lt;/a&gt;大小所允许的最大值，作为整个系统内存的百分比，以便ASP.NET在启动一个新的进程并重新分派存在的请求之前这些工作者进程能够进行消费。如果在你的服务器上仅仅只运行了你的网站应用程序，而且没有其它的进程需要RAM，你可以设置一个更高的值，比如80。&lt;/p&gt;&#xD;
&lt;p&gt;然而，如果你同时有一个会发生内存泄漏的应用程序，那么最好是把该值设置为一个较低的值以便在出现大问题之前泄漏的内存能得到及时的回收从而保持你的站点稳定。尤其是当你使用COM组件并发生内存泄漏时。然而，这只是针对该问题的一个临时解决方案；当然需要你去解决泄漏问题。&lt;/p&gt;&#xD;
&lt;p&gt;除了processModel以外，另外还有一个非常重要的节点system.net，你能够指定发出请求作为单独IP的最大数量。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt;background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid"&gt;&#xD;
&lt;div&gt;&lt;!--{123535328491117}--&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;system.net&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;connectionManagement&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add &lt;/span&gt;&lt;span style="color: #ff0000"&gt;address&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="*"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; maxconnection&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="100"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;connectionManagement&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;system.net&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;默认值为2，设置得比较低。这就意味着你不能从你的Web应用程序用一个IP地址同时链接多于2个的链接。站点获得外部内容很多都是由于默认设置而遭到阻塞。这里我将其设置为100。如果你的Web应用程序会对某一个指定的服务器进行大量的调用，你甚至可以考虑设置一个更高的值。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Madream/aggbug/1713834.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Madream/articles/1713834.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Madream/articles/1712423.html</id><title type="text">HttpModule与HttpHandler详解</title><summary type="text">ASP.NET对请求处理的过程：当请求一个*.aspx文件的时候，这个请求会被inetinfo.exe进程截获，它判断文件的后缀（aspx）之后，将这个请求转交给 ASPNET_ISAPI.dll，ASPNET_ISAPI.dll会通过http管道（Http PipeLine）将请求发送给ASPNET_WP.exe进程，在ASPNET_WP.exe进程中通过HttpRuntime来处理这个请求，处...</summary><published>2010-04-15T02:50:00Z</published><updated>2010-04-15T02:50:00Z</updated><author><name>Madream.F</name><uri>http://www.cnblogs.com/Madream/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Madream/articles/1712423.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Madream/articles/1712423.html"/><content type="html">&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;ASP.NET对请求处理的过程：&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;当请求一个*.aspx文件的时候，这个请求会被inetinfo.exe进程截获，它判断文件的后缀（aspx）之后，将这个请求转交给 ASPNET_ISAPI.dll，ASPNET_ISAPI.dll会通过http管道（Http PipeLine）将请求发送给ASPNET_WP.exe进程，在ASPNET_WP.exe进程中通过HttpRuntime来处理这个请求，处理完毕将结果返回客户端。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;inetinfo.exe进程：&lt;/strong&gt;是www服务的进程，IIS服务和ASPNET_ISAPI.DLL都寄存在此进程中。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;ASPNET_ISAPI.DLL&lt;/strong&gt;：是处理.aspx文件的win32组件。其实IIS服务器是只能识别.html文件的，当IIS服务器发现被请求的文件是.aspx文件时，IIS服务器将其交给aspnet_isapi.dll来处理。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;aspnet_wp.exe进程：&lt;/strong&gt;ASP.NET框架进程，提供.net运行的托管环境，.net的CLR(公共语言运行时)就是寄存在此进程中。&lt;/p&gt;&#xD;
&lt;p&gt;ASP.NET Framework处理一个Http Request的流程：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpRequest--&amp;gt;inetinfo.exe--&amp;gt;ASPNET_ISAPI.dll--&amp;gt;ASPNET_WP.exe--&amp;gt;HttpRuntime--&amp;gt;HttpApplication Factory--&amp;gt;HttpApplication--&amp;gt;HttpModule--&amp;gt;HttpHandler Factory--&amp;gt;HttpHandler--&amp;gt;HttpHandler.ProcessRequest()&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ASP.NET请求处理过程是基于管道模型的，这个管道模型是由多个HttpModule和HttpHandler组成，ASP.NET 把http请求依次传递给管道中各个HttpModule，最终被HttpHandler处理，处理完成后，再次经过管道中的HTTP模块，把结果返回给客户端。我们可以在每个HttpModule中都可以干预请求的处理过程。&lt;br /&gt;注意：在http请求的处理过程中，只能调用一个HttpHandler，但可以调用多个HttpModule。&lt;/strong&gt; &lt;br /&gt;当请求到达HttpModule的时候，系统还没有对这个请求真正处理，但是我们可以在这个请求传递到处理中心（HttpHandler）之前附加一些其它信息，或者截获的这个请求并作一些额外的工作，也或者终止请求等。在HttpHandler处理完请求之后，我们可以再在相应的HttpModule中把请求处理的结果进行再次加工返回客户端。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;HttpModule&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP模块是实现了System.Web.IhttpModule接口的类。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IHttpModule接口的声明：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;public interface IHttpModule&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void Init (HttpApplication context);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void Dispose ();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Init 方法：系统初始化的时候自动调用，这个方法允许HTTP模块向HttpApplication 对象中的事件注册自己的事件处理程序。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dispose方法： 这个方法给予HTTP模块在对象被垃圾收集之前执行清理的机会。此方法一般无需编写代码。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP模块可以向System.Web.HttpApplication对象注册下面一系列事件：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AcquireRequestState 当ASP.NET运行时准备好接收当前HTTP请求的对话状态的时候引发这个事件。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthenticateRequest 当ASP.NET 运行时准备验证用户身份的时候引发这个事件。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthorizeRequest 当ASP.NET运行时准备授权用户访问资源的时候引发这个事件。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BeginRequest 当ASP.NET运行时接收到新的HTTP请求的时候引发这个事件。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Disposed 当ASP.NET完成HTTP请求的处理过程时引发这个事件。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EndRequest 把响应内容发送到客户端之前引发这个事件。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Error 在处理HTTP请求的过程中出现未处理异常的时候引发这个事件。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PostRequestHandlerExecute 在HTTP处理程序结束执行的时候引发这个事件。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PreRequestHandlerExecute 在ASP.NET开始执行HTTP请求的处理程序之前引发这个事件。在这个事件之后，ASP.NET 把该请求转发给适当的HTTP处理程序。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PreSendRequestContent 在ASP.NET把响应内容发送到客户端之前引发这个事件。这个事件允许我们在内容到达客户端之前改变响应内容。我们可以使用这个事件给页面输出添加用于所有页面的内容。例如通用菜单、头信息或脚信息。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PreSendRequestHeaders 在ASP.NET把HTTP响应头信息发送给客户端之前引发这个事件。在头信息到达客户端之前，这个事件允许我们改变它的内容。我们可以使用这个事件在头信息中添加cookie和自定义数据。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ReleaseRequestState 当ASP.NET结束所搜有的请求处理程序执行的时候引发这个事件。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ResolveRequestCache 我们引发这个事件来决定是否可以使用从输出缓冲返回的内容来结束请求。这依赖于Web应用程序的输出缓冲时怎样设置的。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UpdateRequestCache 当ASP.NET完成了当前的HTTP请求的处理，并且输出内容已经准备好添加给输出缓冲的时候，引发这个事件。这依赖于Web应用程序的输出缓冲是如何设置的。&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;----------------------------------------------------------------------------------------------------------------------------------------------&lt;/p&gt;&#xD;
&lt;p&gt;BeginRequest和PreRequestHandlerExecute之间的事件是在服务器执行HttpHandler处理之前触发。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PostRequestHandlerExecute和PreSendRequestContent之间的事件是在服务器执行Handler处理之后触发。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 下面我们看一下如何使用HttpModule来实现我们日常的应用：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpModule通过在某些事件中注册，把自己插入ASP.NET请求处理管道。当这些事件发生的时候，ASP.NET调用对相应的HTTP模块，这样该模块就能处理请求了。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;1、向每个页面动态添加一些备注或说明性的文字：&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 有的网站每一个页面都会弹出一个广告或在每个页面都以注释形式（&amp;lt;!-- --&amp;gt;）加入网站的版权信息。如果在每个页面教编写这样的JS代码的话，对于大一点的网站，这种JS代码的编写与维护可是一个很繁琐枯燥的工作。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 有了HttpModule我们就可以很简单地解决这个问题了。HttpModule是客户端发出请求到客户端接收到服务器响应之间的一段必经之路。我们完全可以在服务器处理完请求之后，并在向客户端发送响应文本之前这段时机，把这段注释文字添加到页面文本之后。这样，每一个页面请求都会被附加上这段注释文字。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这段代码究竟该在哪个事件里实现呢？ PostRequestHandlerExecute和PreSendRequestContent之间的任何一个事件都可以，但我比较喜欢在EndRequest事件里编写代码。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#800080"&gt;第一步：创建一个类库ClassLibrary831。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第二步：编写一个类实现IHttpModule接口&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt; &lt;/strong&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;class TestModule:IHttpModule&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Dispose()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Init(HttpApplication context)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第三步：在Init事件中注册EndRequest事件，并实现事件处理方法&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;&lt;strong&gt;class TestModule:IHttpModule&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Dispose(){}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Init(HttpApplication context)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;context.EndRequest += new EventHandler(context_EndRequest);&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;void context_EndRequest(object sender, EventArgs e)&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpApplication ha = (HttpApplication)sender;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ha.Response.Write("&amp;lt;!--这是每个页面都会动态生成的文字。--grayworm--&amp;gt;");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第四步：在Web.Conofig中注册一下这个HttpModule模块&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;&amp;lt;httpModules&amp;gt;&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt; &amp;lt;add name="TestModule" type="ClassLibrary831.TestModule,ClassLibrary831"&lt;/strong&gt;&amp;gt;&amp;lt;/add&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/httpModules&amp;gt; &lt;br /&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name：模块名称，一般是类名&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type：有两部分组成，前半部分是命名空间和类名组成的全名，后半部分是程序集名称，如果类是直接放在App_Code文件夹中，那程序名称是App_Code。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这样在Web站点是添加该类库的引用后，运行每个页面，会发现其源文件中都会加入&amp;#8220;&amp;lt;!--这是每个页面都会动态生成的文字。--grayworm--&amp;gt;&amp;#8221;这句话。同样的方法你也可以在其中加入JS代码。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;2、身份检查&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 大家在作登录时，登录成功后，一般要把用户名放在Session中保存，在其它每一个页面的Page_Load事件中都检查Session中是否存在用户名，如果不存在就说明用户未登录，就不让其访问其中的内容。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在比较大的程序中，这种做法实在是太笨拙，因为你几乎要在每一个页面中都加入检测Session的代码，导致难以开发和维护。下面我们看看如何使用HttpModule来减少我们的工作量&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 由于在这里我们要用到Session中的内容，我们只能在AcquireRequestState和PreRequestHandlerExecute事件中编写代码，因为在HttpModule中只有这两事件中可以访问Session。这里我们选择PreRequestHandlerExecute事件编写代码。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#800080"&gt;第一步：创建一个类库ClassLibrary831。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第二步：编写一个类实现IHttpModule接口&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;&lt;strong&gt;class TestModule:IHttpModule&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Dispose()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Init(HttpApplication context)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第三步：在Init事件中注册PreRequestHandlerExecute事件，并实现事件处理方法&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;&lt;strong&gt;class AuthenticModule:IHttpModule&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Dispose(){}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Init(HttpApplication context)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;void context_PreRequestHandlerExecute(object sender, EventArgs e)&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpApplication ha = (HttpApplication)sender;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string path = ha.Context.Request.Url.ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int n = path.ToLower().IndexOf("Login.aspx"); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (n == -1) //是否是登录页面，不是登录页面的话则进入{}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ha.Context.Session["user"] == null) //是否Session中有用户名，若是空的话，转向登录页。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ha.Context.Response.Redirect("Login.aspx?source=" + path);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第四步：在Login.aspx页面的&amp;#8220;登录&amp;#8221;按钮中加入下面代码&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;protected void Button1_Click(object sender, EventArgs e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(true)&amp;nbsp;&amp;nbsp;&amp;nbsp; //判断用户名密码是否正确&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (Request.QueryString["source"] != null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string s = Request.QueryString["source"].ToLower().ToString();&amp;nbsp;&amp;nbsp; //取出从哪个页面转来的&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Session["user"] = txtUID.Text;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Redirect(s); //转到用户想去的页面&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Redirect("main.aspx");&amp;nbsp;&amp;nbsp;&amp;nbsp; //默认转向main.aspx&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第五步：在Web.Conofig中注册一下这个HttpModule模块&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;httpModules&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="TestModule" type="ClassLibrary831.TestModule,ClassLibrary831"&amp;gt;&amp;lt;/add&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/httpModules&amp;gt; &lt;br /&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3、多模块的操作 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果定义了多个HttpModule，在web.config文件中引入自定义HttpModule的顺序就决定了多个自定义HttpModule在处理一个HTTP请求的接管顺序。&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;---------------------------------------------------------------------------------------------------------------------------------------&lt;/p&gt;&#xD;
&lt;p&gt;HttpHandler是HTTP请求的处理中心，真正地对客户端请求的服务器页面做出编译和执行，并将处理过后的信息附加在HTTP请求信息流中再次返回到HttpModule中。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpHandler与HttpModule不同，一旦定义了自己的HttpHandler类，那么它对系统的HttpHandler的关系将是&amp;#8220;覆盖&amp;#8221;关系。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IHttpHandler接口声明&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt; public interface IHttpHandler&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool IsReusable { get; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void ProcessRequest(HttpContext context); //请求处理函数&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 示例：把硬盘上的图片以流的方式写在页面上&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;&lt;strong&gt; class TestHandler : IHttpHandler&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;public void ProcessRequest(HttpContext context)&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileStream fs = new FileStream(context.Server.MapPath("worm.jpg"), FileMode.Open);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] b = new byte[fs.Length];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fs.Read(b, 0, (int)fs.Length);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fs.Close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.Response.OutputStream.Write(b, 0, b.Length);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool IsReusable&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Web.Config配置文件&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt; &lt;strong&gt;&amp;lt;httpHandlers&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add verb="*" path="*" type="ClassLibrary831.TestHandler,ClassLibrary831"&amp;gt;&amp;lt;/add&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/httpHandlers&amp;gt; &lt;br /&gt;&lt;/strong&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;Verb属性&lt;/strong&gt;：指定了处理程序支持的HTTP动作。*－支持所有的HTTP动作;&amp;#8220;GET&amp;#8221;－支持Get操作;&amp;#8220;POST&amp;#8221;－支持Post操作;&amp;#8220;GET, POST&amp;#8221;－支持两种操作。 &lt;br /&gt;　　&lt;strong&gt;Path属性&lt;/strong&gt;：指定了需要调用处理程序的路径和文件名（可以包含通配符）。&amp;#8220;*&amp;#8221;、&amp;#8220;*.aspx&amp;#8221;、&amp;#8220;showImage.aspx&amp;#8221;、&amp;#8220;test1.aspx,test2.aspx&amp;#8221;&lt;br /&gt;　　&lt;strong&gt;Type属性&lt;/strong&gt;：用名字空间、类名称和程序集名称的组合形式指定处理程序或处理程序工厂的实际类型。ASP.NET运行时首先搜索bin目录中的DLL，接着在GAC中搜索。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这样程序运行的效果是该网站的任何一个页面都会显示worm.jpg图片。如何只让一个页面（default21.aspx）执行HttpHandler 中的ProcessRequest方法呢？最简单的办法是在Web.Config文件中把path配置信息设为default21.aspx。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 根据这个例子大家可以考虑一下如何编写&amp;#8220;验证码&amp;#8221;了。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;IHttpHandler工厂&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IHttpHandlerFactory的作用是对IHttpHandler进行管理。工厂的作用请见&lt;a href="http://hi.baidu.com/grayworm/blog/item/4a832160f8c9de46eaf8f8c1.html" target="_blank"&gt;&lt;font color="#336699"&gt;http://hi.baidu.com/grayworm/blog/item/4a832160f8c9de46eaf8f8c1.html&lt;/font&gt;&lt;/a&gt;"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IHttpHandlerFactory接口的声明：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;public interface IHttpHandlerFactory&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IHttpHandler GetHandler (HttpContext context,string requestType,string url,string pathTranslated);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void ReleaseHandler (IHttpHandler handler);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetHandler返回实现IHttpHandler接口的类的实例，ReleaseHandler使工厂可以重用现有的处理程序实例。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 示例：两个用IHttpHandlerFactory来实现对不同HttpHandler的调用。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 有两个HttpHandler：将图片显示在页面上的HttpHandler和生成验证码的Handler&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //将图片显示在页面上的Handler&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;class TestHandler : IHttpHandler&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void ProcessRequest(HttpContext context)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileStream fs = new FileStream(context.Server.MapPath("worm.jpg"), FileMode.Open);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] b = new byte[fs.Length];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fs.Read(b, 0, (int)fs.Length);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fs.Close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.Response.OutputStream.Write(b, 0, b.Length);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool IsReusable&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //生成验证码的Handler &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;class CodeHandler:IHttpHandler&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool IsReusable&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void ProcessRequest(HttpContext context)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Image b = new Bitmap(50,20);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Graphics g = Graphics.FromImage(b);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SolidBrush sb = new SolidBrush(Color.White);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Font f = new Font("宋体", 12);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string str = "";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Random r = new Random();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; 4; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += r.Next(10);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g.DrawString(str,f,sb,0,0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IHttpHandler工厂&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;class TestHandlerFactory : IHttpHandlerFactory&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string fname = url.Substring(url.IndexOf('/') + 1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (fname.IndexOf('/') != -1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fname = fname.Substring(fname.IndexOf('/') + 1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string cname = fname.Substring(0, fname.IndexOf('.'));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string className ="";&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; className = "ClassLibrary831.CodeHandler";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; object h = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //h = new TestHandler();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h = Activator.CreateInstance(Type.GetType(className));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new HttpException("工厂不能为类型" + cname + "创建实例。", e);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (IHttpHandler)h;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void ReleaseHandler(IHttpHandler handler)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;font color="#ffffff"&gt;(车延禄)&lt;/font&gt;&lt;br /&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 配置文件&lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;httpHandlers&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add verb="*" path="default21.aspx,default22.aspx" type="ClassLibrary831.TestHandlerFactory,ClassLibrary831"&amp;gt;&amp;lt;/add&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/httpHandlers&amp;gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 这样TestHandlerFactory就会根据请求的不同页面执行不同的HttpHandler处理程序了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;HttpHandler使用会话&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果要在处理程序中使用Session，那必须把该HttpHandler实现IRequiresSessionState接口，,IRequiresSessionState接口是个空接口，它没有抽象方法，只是一个标记。此处就不作例子验证了&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Madream/aggbug/1712423.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Madream/articles/1712423.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Madream/articles/1700116.html</id><title type="text">使用ashx文件响应来自JQuery的JSON请求</title><summary type="text">ashx文件是.net 2.0新加的文件类型(其实在.net 1.0下已经可用,但是没有公开提供).ashx文件和aspx文件有什么不同? 我们先新建一个ashx文件看看:&amp;lt;%@ WebHandler Language="C#" Class="Handler" %&amp;gt; using System; using System.Web; public class Handler : IHttp...</summary><published>2010-03-29T15:33:00Z</published><updated>2010-03-29T15:33:00Z</updated><author><name>Madream.F</name><uri>http://www.cnblogs.com/Madream/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Madream/articles/1700116.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Madream/articles/1700116.html"/><content type="html">&lt;p&gt;ashx文件是.net 2.0新加的文件类型(其实在.net 1.0下已经可用,但是没有公开提供).&lt;/p&gt;&#xD;
&lt;p&gt;ashx文件和aspx文件有什么不同? 我们先新建一个ashx文件看看:&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;lt;%@ WebHandler Language="C#"  %&amp;gt; &lt;br /&gt;using System; &lt;br /&gt;using System.Web; &lt;br /&gt;public class Handler : IHttpHandler&amp;nbsp; &lt;br /&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;　　public void ProcessRequest (HttpContext context) &lt;/p&gt;&#xD;
&lt;p&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; 　 　　context.Response.ContentType = "text/plain";&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; 　 　　context.Response.Write("Hello World");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;　　}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;　　public bool IsReusable &lt;/p&gt;&#xD;
&lt;p&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;　　　　get &lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;return false;&lt;/p&gt;&#xD;
&lt;p&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;　　} &lt;br /&gt;}&lt;br /&gt;看,比aspx简洁多了吧.只有一个文件,没有后台cs文件(基于代码安全考虑,后边我们会自己添加这个文件).ashx对比aspx文件,就好像少了cs文件.其实这就是ashx和aspx不同的地方,因为aspx要将前后台显示和处理逻辑分开,所以就弄成了两个文件,其实,在最终编译的时候,aspx和cs还是会编译到同一个类中去.这中间就要设计html的一些逻辑处理.而ashx不同,它只是简单的对web http请求的直接返回你想要返回的结果.比aspx少处理了html的过程.理论上,比aspx要快.&lt;/p&gt;&#xD;
&lt;p&gt;看看.net config文件中对两个文件类型请求的配置吧&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;add path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" validate="True" /&amp;gt;&lt;br /&gt;&amp;lt;add path="*.ashx" verb="*" type="System.Web.UI.SimpleHandlerFactory" validate="True" /&amp;gt;&lt;br /&gt;可以看到两个文件处理的类不一样(ashx处理的类叫SimpleHandleFactory,既然叫Simple,应该处理过程也比较Simple.响应速度也应该快点吧:)&lt;/p&gt;&#xD;
&lt;p&gt;鼓捣完了你就大概明白了ashx不过.net里面自定义好的一个请求格式,ashx文件类的文件的处理过程要比aspx要简单得多.&lt;/p&gt;&#xD;
&lt;p&gt;不说这些东西了.说会怎么利用ashx文件来实现我们的AJAX请求吧(其实实现和JQuery和JSON关系不大)&lt;/p&gt;&#xD;
&lt;p&gt;看看JS代码:&lt;br /&gt;&amp;nbsp;&lt;br /&gt;function getSecondaryContent(menuId){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; $.getJSON("Article/FreshNews.ashx", function(data) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var txt = "&amp;lt;ul class=\"news\"&amp;gt;";&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $.each(data,function(i,n){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(n.Url == "#")&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 　　txt += "&amp;lt;li&amp;gt;&amp;lt;a href=\"#\" onclick=\"articleTitle_onclick('"+ n.ArticleId +"')\"&amp;gt;"+ n.Title +"&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;";&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 　　txt += "&amp;lt;li&amp;gt;&amp;lt;a href=\""+ n.Url +"\" target=\"_blank\"&amp;gt;"+ n.Title +"&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;";&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; txt += "&amp;lt;/ul&amp;gt;";&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("#"+menuId).after(txt);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;}); &lt;br /&gt;} &lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;和用其他文件没有差别吧?天下乌鸦一般黑!(汗~~~忽然冒出这个比喻.自己都觉得汗-_-||)&lt;/p&gt;&#xD;
&lt;p&gt;ashx文件如下:&lt;br /&gt;&amp;lt;%@ WebHandler Language="C#"  %&amp;gt;&lt;br /&gt;怎么样?是不是发觉少了点东西?和新建的文件不同了吧?呵呵,其实是我们将上边这句话以外的所有代码都放到App_Code里面了.&lt;br /&gt;using System; &lt;br /&gt;using System.Web; &lt;br /&gt;public class FreshNews : IHttpHandler{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; public void ProcessRequest(HttpContext context)&lt;/p&gt;&#xD;
&lt;p&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 　　//context.Response.ContentType = "text/plain";&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 　　context.Response.ContentType = "application/json";&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 　　context.Response.Charset = "utf-8";&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 　　string txt = "[{\"Title\":\"学习使用AJAX技术\",\"Url\":\"#\",\"ArticleId\":\"Art1234\"},{\"Title\":\"使用JQuery构建网站&lt;/p&gt;&#xD;
&lt;p&gt;\",\"Url\":\"#\",\"ArticleId\":\"Art1235\"},{\"Title\":\"使用JSON文件传输数据\",\"Url\":\"#\",\"ArticleId\":\"Art1236\"}]";&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 　　context.Response.Write(txt);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp; public bool IsReusable&lt;/p&gt;&#xD;
&lt;p&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 　　get{return false;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; } &lt;br /&gt;}&lt;br /&gt;为什么要这样?因为MS说系统发布的时候ashx和asmx类型文件都是"生成程序集。原始文件保留在原位置，作为完成请求的占位符。",为了发布后不让人随便看到我们的代码,我们只有把代码移到App_Code里面了.不过,.net的反编译比什么都容易-_-|| 聊胜于无,心理安慰吧!&lt;/p&gt;&#xD;
&lt;p&gt;还有一个小插曲:因为我在web.config里面的设置是:&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" responseHeaderEncoding="utf-8" /&amp;gt;&lt;br /&gt;就是因为JSON文件只支持Unicode编码,所以我就一狠心将所有编码都改成utf-8,想着这样做就一定没有错了.谁知道,js接收的数据中文死活是乱码,无论我怎么设置ContentType都是一样,差点没有把我气疯.&lt;/p&gt;&#xD;
&lt;p&gt;后来千辛万苦才想起好像这些编码和当前区域设置有关,续步尝试之下,发现只有将fileEncoding设置为"gb2312"才算正确获取到数据:&lt;br /&gt;&amp;lt;globalization fileEncoding="gb2312" requestEncoding="utf-8" responseEncoding="utf-8" responseHeaderEncoding="utf-8" /&amp;gt;&lt;br /&gt;忘了顺便说一句:在ashx文件用使用Session必须实现 IRequiresSessionState 接口&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Madream/aggbug/1700116.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Madream/articles/1700116.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Madream/articles/1696960.html</id><title type="text">C#设计模式之Singleton</title><summary type="text">近来，我在学习如何在C#语言中使用设计模式中读到一些资料，其中有关Singleton设计模式引起了我的注意。学过设计模式的开发者都知道Singleton模式。我想简要地解释一下这个设计模式是为那些尚未学习过设计模式的朋友。Singleton设计模式是告诉您如何在你的应用程序创建一个唯一类示例的全局对象，也就是说，这个对象只能被实例化一次，这个对象同时提供一个访问它的一个全局的访问点。这种对象如应用...</summary><published>2010-03-26T06:18:00Z</published><updated>2010-03-26T06:18:00Z</updated><author><name>Madream.F</name><uri>http://www.cnblogs.com/Madream/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Madream/articles/1696960.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Madream/articles/1696960.html"/><content type="html">&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 近来，我在学习如何在&lt;/span&gt;&lt;span lang="EN-US"&gt;C#&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;语言中使用设计模式中读到一些资料，其中有关&lt;/span&gt;&lt;span lang="EN-US"&gt;Singleton&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;设计模式引起了我的注意。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;学过设计模式的开发者都知道&lt;/span&gt;&lt;span lang="EN-US"&gt;Singleton&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;模式。我想简要地解释一下这个设计模式是为那些尚未学习过设计模式的朋友。&lt;/span&gt;&lt;span lang="EN-US"&gt;Singleton&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;设计模式是告诉您如何在你的应用程序创建一个唯一类示例的全局对象，也就是说，这个对象只能被实例化一次，这个对象同时提供一个访问它的一个全局的访问点。这种对象如应用程序中的窗口管理器或者是打印假脱机、数据库连接池等。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;现在让我们先看一下设计模式一书中对&lt;/span&gt;&lt;span lang="EN-US"&gt;Singleton&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;模式的&lt;/span&gt;&lt;span lang="EN-US"&gt;C++&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;实现（为了方便比较，我把实现的代码写成内联的方式）：&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;class Singleton&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;public:&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;static Singleton* Instance()&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if(_instance==0)&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_instance=new Singleton;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return _instance;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-indent: 21pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;protected:&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Singleton();&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;Private:&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Static Singleton* _instance;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;};&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;Stington* Singleton::_instance=0;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这里我不想对上述的代码作解释，大家可以参阅本文后面提供的参考文献。&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 为了更好的理解&lt;/span&gt;&lt;span lang="EN-US"&gt;C#&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，我这里也出示一下&lt;/span&gt;&lt;span lang="EN-US"&gt;Java&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中的&lt;/span&gt;&lt;span lang="EN-US"&gt;Singleton&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;模式实现代码（不是有人认为&lt;/span&gt;&lt;span lang="EN-US"&gt;C#&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是对&lt;/span&gt;&lt;span lang="EN-US"&gt;Java&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的剽窃吗&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Wingdings; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;&lt;span style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）：&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;class Singleton&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public Singleton Instance()&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if(_instace==null)&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 42pt; text-indent: 21pt"&gt;&lt;span lang="EN-US" style="mso-font-kerning: 0pt"&gt;&lt;font size="3"&gt;synchronized (Class.forName("Singleton"))&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 42pt; text-indent: 21pt"&gt;&lt;span lang="EN-US" style="mso-font-kerning: 0pt"&gt;&lt;font size="3"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US" style="mso-font-kerning: 0pt"&gt;&lt;font size="3"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if (_instance == null)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-indent: 21pt"&gt;&lt;span lang="EN-US" style="mso-font-kerning: 0pt"&gt;&lt;font size="3"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US" style="mso-font-kerning: 0pt"&gt;&lt;font size="3"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_instance = new Singleton();&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US" style="mso-font-kerning: 0pt"&gt;&lt;font size="3"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US" style="mso-font-kerning: 0pt"&gt;&lt;font size="3"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US" style="mso-font-kerning: 0pt"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US" style="mso-font-kerning: 0pt"&gt;&lt;font size="3"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return _instance;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-indent: 21pt"&gt;&lt;span lang="EN-US" style="mso-font-kerning: 0pt"&gt;&lt;font size="3"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US" style="mso-font-kerning: 0pt"&gt;&lt;font size="3"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;protected Singleton() {}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-indent: 21pt"&gt;&lt;span lang="EN-US" style="mso-font-kerning: 0pt"&gt;&lt;font size="3"&gt;private static Singleton _instance = null;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US" style="mso-font-kerning: 0pt"&gt;&lt;font size="3"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在上述的&lt;/span&gt;&lt;span lang="EN-US"&gt;Java&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;代码中使用了双重检测机制，来避免多个线程的&lt;/span&gt;&lt;span lang="EN-US"&gt;Singleton&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;实例化问题。同样，我也不想对上述的代码做任何解释。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 首先，让我们看一下&lt;/span&gt;&lt;span lang="EN-US"&gt;C#&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中类似&lt;/span&gt;&lt;span lang="EN-US"&gt;Java&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的实现：&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;class Singleton&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public static Singleton Instance()&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if(_instance==null)&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;lock (typeof(Singleton))&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if(_instace==null)&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 5"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_instance=new Singleton();&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return _instance;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;protected Singleton(){}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;private static volatile Singleton _instance=null;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 现在，是我们睁大眼睛的时候了，下面是利用&lt;/span&gt;&lt;span lang="EN-US"&gt;.NET Framework&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;平台优势实现&lt;/span&gt;&lt;span lang="EN-US"&gt;Singleton&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;模式的代码：&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font color="#ff0000" size="3"&gt;sealed class Singleton&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font color="#ff0000" size="3"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font color="#ff0000"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;private Singleton();&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font color="#ff0000"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public static readonly Singleton Instance=new Singleton();&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font color="#ff0000" size="3"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp; 非常吃惊是不是，不仅代码减少了许多，同时也解决了线程问题带来的性能上损失。有避免了编译器优化的问题。上述的代码真的能正常工作吗？如果能，那么它又是怎样工作的呢？&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 注意到，&lt;/span&gt;&lt;span lang="EN-US"&gt;Singleton&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类被声明为&lt;/span&gt;&lt;span lang="EN-US"&gt;sealed&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，以此保证它自己不会被继承，其次没有了&lt;/span&gt;&lt;span lang="EN-US"&gt;Instance&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的方法，将原来&lt;/span&gt;&lt;span lang="EN-US"&gt;_instance&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;成员变量变成&lt;/span&gt;&lt;span lang="EN-US"&gt;public readonly&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，并在声明时被初始化。通过这些改变，我们确实得到了&lt;/span&gt;&lt;span lang="EN-US"&gt;Singleton&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的模式，原因是在&lt;/span&gt;&lt;span lang="EN-US"&gt;JIT&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的处理过程中，如果类中的&lt;/span&gt;&lt;span lang="EN-US"&gt;static&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;属性被任何方法使用时，&lt;/span&gt;&lt;span lang="EN-US"&gt;.NET Framework&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;将对这个属性进行初始化，于是在初始化&lt;/span&gt;&lt;span lang="EN-US"&gt;Instance&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;属性的同时&lt;/span&gt;&lt;span lang="EN-US"&gt;Singleton&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类实例得以创建和装载。而私有的构造函数和&lt;/span&gt;&lt;span lang="EN-US"&gt;readonly(&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;只读&lt;/span&gt;&lt;span lang="EN-US"&gt;)&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;保证了&lt;/span&gt;&lt;span lang="EN-US"&gt;Singleton&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;不会被再次实例化，这正是&lt;/span&gt;&lt;span lang="EN-US"&gt;Singleton&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;设计模式的意图。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;本文不是要讨论设计模式，而只是想通过这个例子来说明一件事，那就是精通&lt;/span&gt;&lt;span lang="EN-US"&gt;.NET Framework&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;并将它灵活运用对实际应用开发的重要性。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Madream/aggbug/1696960.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Madream/articles/1696960.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Madream/articles/1696813.html</id><title type="text">C#设计模式之简单工厂篇应用场景</title><summary type="text">首先定义一个接口，具体名为Idatabase,在这个接口中，定义好数据库操作的方法名和参数，以及返回值，本案例中我定义如下方法： public interface IDatabase {  bool Connect(string ConnectString);  bool Open();  bool Command(string SQL);  void Close(); } 重要提醒：&amp;#8220...</summary><published>2010-03-26T03:10:00Z</published><updated>2010-03-26T03:10:00Z</updated><author><name>Madream.F</name><uri>http://www.cnblogs.com/Madream/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Madream/articles/1696813.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Madream/articles/1696813.html"/><content type="html">&lt;p&gt;首先定义一个接口，具体名为Idatabase,在这个接口中，定义好数据库操作的方法名和参数，以及返回值，本案例中我定义如下方法： &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;public interface IDatabase &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;bool Connect(string ConnectString); &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;bool Open(); &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;bool Command(string SQL); &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;void Close(); &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;重要提醒：&amp;#8220;接口一生唯谨慎,定义大事不糊涂&amp;#8221;，编写接口时一定要考虑周全，并对参数、返回值进行反复推敲，为什么？因为所有的实现类都是要根据该接口的规范进行代码具体编写，也即接口的定义是公用的，一旦改动了接口，后果就是所有的实现类也都必须相应调整。 &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;然后就是编写具体的实现类了，客户要求多少不同类型的数据库，你就定义多少个Idatabase的实现类，虽然工作量大了点，可当你看到客户满意的笑容时，你心里也就会有一种由衷的幸福感，好了，SqlServer实现类代码如下： &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;public class SqlServer : IDatabase &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;SqlConnection conn; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;SqlCommand command; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;public bool Connect(string ConnectString) &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;try &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;conn = new SqlConnection(ConnectString); &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;return true; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;catch(SqlException) &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;return false; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;public bool Open() &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;try &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;conn.Open(); &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;return true; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;catch(SqlException) &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;return false; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;public bool Command(string SQL) &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;try &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;command = new SqlCommand(SQL,conn); &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;command.ExecuteNonQuery(); &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;return true; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;catch(SqlException) &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;return false; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;public void Close() &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;conn.Close(); &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;conn.Dispose(); &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &lt;/p&gt;&#xD;
&lt;p&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;呵呵，有点长，咬着牙读完，心里明白了就会很舒服的，如果你现在有这种感觉了，好，再接再厉，再为Oracle实现类编写具体代码吧，依葫芦画瓢，大家有空就画一下吧，我就画个雏形了： &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;public class Oracle : IDatabase &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;public Oracle() &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;public bool Connect(string ConnectString) &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;return true; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;public bool Open() &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;return true; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;public bool Command(string SQL) &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;return true; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;public void Close() &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;嗯，不错，你有多少种数据库就编写不同的实现类代码吧，这里就不赘述了，接下来呢？聪明的读者一定会想到这个问题：这个接口和这么多的实现类怎么用啊？我们再定义一个称之为工厂的类，由它来决定选用哪种数据库为进行操作，这个类比较简单： &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;public class Factory &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;public static IDatabase SelectDatabase(string DatabaseType) &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;switch(DatabaseType) &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;case "SqlServer": &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;return new SqlServer();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;case "Oracle": &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;return new Oracle(); &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;default: &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;return new SqlServer(); &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;最好的方式是不用switch,根据类名去创建,另加以下方式:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;public class Factory &#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;public static IDatabase CreateDatabase(string ClassName) &lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;public IDatabase myDB=null;&lt;/p&gt;&#xD;
&lt;p&gt;try&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;Type type = Type.GetType(ClassName,true); //获取一个类&lt;/p&gt;&#xD;
&lt;p&gt;myDB= (IDatabase)Activator.CreateInstance(type); //根据类创建一个实例&lt;/p&gt;&#xD;
&lt;p&gt;} &lt;/p&gt;&#xD;
&lt;p&gt;catch (TypeLoadException e) &lt;/p&gt;&#xD;
&lt;p&gt;Console.WriteLine("I dont know this kind of fruit,exception caught - {0}" ,e.Message); &lt;/p&gt;&#xD;
&lt;p&gt;return myDB; &lt;/p&gt;&#xD;
&lt;p&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;}&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;} &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;看明白了吗？好了，我们该让尊敬的、永远高贵的客户出场了，只有他，唯有他才有决定用哪种数据库的最高权限，你看，他这样用： &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;public class Client &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;public static void Main() &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;//Get the database information from Web.Config. &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;string DBType = ConfigurationSettings.AppSettings["DBType"]; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;string DBConnectString = ConfigurationSettings.AppSettings["DBConn"];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;IDatabase DB = Factory.SelectDatabase(DBType); &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;//Connect the selected database. &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;if(DB.Connect(DBConnectString)==false) &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;Console.WriteLine("The database {0} can't be connected.",DBType); &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;return; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;//Open database. &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;if(DB.Open()==false) &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;Console.WriteLine("The database {0} can't be opened, the connect string is {1}.",DBType,DBConnectString); &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;return; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;//Execute SQL Command. &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;string SQL = "update Order set price = price * 0.07 where productID = '002'";&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;if(DB.Command(SQL)) &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;//Do something...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;else &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;Console.WriteLine("The Operator is not success. SQL statament is {0}",SQL); &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;DB.Close(); &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;return; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;DB.Close(); &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;好了，工程峻工了，你们明白了没有？ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;思考题：简单工厂的应用场合和局限性？ &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;作业题：假如要开发一个多媒体播放器，既能用Window MediaPlayer播放，又能用RealPlayer播放，还能用QuickTime播放，具体用什么播放器，由客户选择，请你画出UML图并写出代码。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Madream/aggbug/1696813.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Madream/articles/1696813.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Madream/articles/1696718.html</id><title type="text">一个简单O/R M组件(HFSoft.Data).NET</title><summary type="text">一直想用O/R M的模式去开应用系统；但在。NET下又没有成熟的产品，nhibernate虽然不错但结构比较复杂，如果出现问题维护起来也比较麻烦。所以打算自己编写这样一个组件，在使用、维护和扩展方面的都比较容易把握；对项目的后期维护也比较有利。组件功能上也远比不上nhibernate,只实现了单表和视图的映射操作、查询对象化等功能。在设计的过程也参考了nhibernate的设计方式，毕竟nhibe...</summary><published>2010-03-26T01:49:00Z</published><updated>2010-03-26T01:49:00Z</updated><author><name>Madream.F</name><uri>http://www.cnblogs.com/Madream/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Madream/articles/1696718.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Madream/articles/1696718.html"/><content type="html">&lt;p&gt;一直想用O/R M的模式去开应用系统；但在。NET下又没有成熟的产品，nhibernate虽然不错但结构比较复杂，如果出现问题维护起来也比较麻烦。所以打算自己编写这样一个组件，在使用、维护和扩展方面的都比较容易把握；对项目的后期维护也比较有利。组件功能上也远比不上nhibernate,只实现了单表和视图的映射操作、查询对象化等功能。在设计的过程也参考了nhibernate的设计方式，毕竟nhibernate的设计不错可以直接拿过来使用。根据自己的情况修改一下就可以了。&lt;/p&gt;&#xD;
&lt;p&gt;在设计时第一个考虑的问题就是组件对多类型数据库的支持，所以针对数据库提供者提取接口；在设计这个接口时nhibernate给我带来很大的启发；可以说是直接引用了它的设计原理。当数据库提供者接口完成后，就可以针对这个接口做数据库处理的工作了。&lt;/p&gt;&#xD;
&lt;p&gt;组件大体框架如下：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;IDataSession&lt;/p&gt;&#xD;
&lt;p&gt;数据操作描述，包括找开连接、启用事务、插入对象、删除对象等操作。&lt;/p&gt;&#xD;
&lt;p&gt;IDriverType&lt;/p&gt;&#xD;
&lt;p&gt;数据库提供者描述，主要用于描述数据库类型关键的东西，如果数据库连接对象、对应的Command类型等。&lt;/p&gt;&#xD;
&lt;p&gt;IExpression&lt;/p&gt;&#xD;
&lt;p&gt;条件表达式描述，用于处理查询过程中的条件；从些接口实现的条件表达式有:=、&amp;gt;、&amp;lt;&amp;gt;、like、in等；&lt;/p&gt;&#xD;
&lt;p&gt;组件还有很多对象进行内部处理的：类的映射信息，主要和忝相就应的SQL语句和命令对象；缓存类用于缓存操作命令对象、命令对持久化接口等。&lt;/p&gt;&#xD;
&lt;p&gt;类和数据库的关系映射&lt;/p&gt;&#xD;
&lt;p&gt;实体类和数据库表的关联采用了XML文件描述，相应对nhibernate业说比较简单.&lt;/p&gt;&#xD;
&lt;p&gt;以下是描述employees类和employees表对映象关系。&lt;/p&gt;&#xD;
&lt;p&gt;类文件&lt;/p&gt;&#xD;
&lt;p&gt;using System;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;namespace NorthWind.Entitys&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;/// &amp;lt;summary&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;/// Employees&lt;/p&gt;&#xD;
&lt;p&gt;/// &amp;lt;/summary&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;public class Employees&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;public Employees()&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;//&lt;/p&gt;&#xD;
&lt;p&gt;// TODO: 在此处添加构造函数逻辑&lt;/p&gt;&#xD;
&lt;p&gt;//&lt;/p&gt;&#xD;
&lt;p&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;public const string F_EmployeeID="EmployeeID";&lt;/p&gt;&#xD;
&lt;p&gt;private Int32 mEmployeeID;&lt;/p&gt;&#xD;
&lt;p&gt;/// &amp;lt;summary&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;/// [int identity]&lt;/p&gt;&#xD;
&lt;p&gt;/// &amp;lt;/summary&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;public Int32 EmployeeID&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;get&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;return mEmployeeID;&lt;/p&gt;&#xD;
&lt;p&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;set&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;mEmployeeID = value;&lt;/p&gt;&#xD;
&lt;p&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;public const string F_LastName="LastName";&lt;/p&gt;&#xD;
&lt;p&gt;private String mLastName;&lt;/p&gt;&#xD;
&lt;p&gt;/// &amp;lt;summary&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;/// [nvarchar]&lt;/p&gt;&#xD;
&lt;p&gt;/// &amp;lt;/summary&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;public String LastName&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;get&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;return mLastName;&lt;/p&gt;&#xD;
&lt;p&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;set&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;mLastName = value;&lt;/p&gt;&#xD;
&lt;p&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;public const string F_FirstName="FirstName";&lt;/p&gt;&#xD;
&lt;p&gt;private String mFirstName;&lt;/p&gt;&#xD;
&lt;p&gt;/// &amp;lt;summary&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;/// [nvarchar]&lt;/p&gt;&#xD;
&lt;p&gt;/// &amp;lt;/summary&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;public String FirstName&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;get&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;return mFirstName;&lt;/p&gt;&#xD;
&lt;p&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;set&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;mFirstName = value;&lt;/p&gt;&#xD;
&lt;p&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;..&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;..&lt;/p&gt;&#xD;
&lt;p&gt;映射关系的XML文件&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;class name="NorthWind.Entitys.Employees,NorthWind.Entitys" table="Employees"&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;id name="EmployeeID" column="EmployeeID" value="SELECT @@IDENTITY ,false"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;property name="LastName" column="LastName"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;property name="FirstName" column="FirstName"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;property name="Title" column="Title"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;property name="TitleOfCourtesy" column="TitleOfCourtesy"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;property name="BirthDate" column="BirthDate"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;property name="HireDate" column="HireDate"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;property name="Address" column="Address"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;property name="City" column="City"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;property name="Region" column="Region"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;property name="PostalCode" column="PostalCode"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;property name="Country" column="Country"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;property name="HomePhone" column="HomePhone"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;property name="Extension" column="Extension"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;property name="Photo" column="Photo"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;property name="Notes" column="Notes"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;property name="ReportsTo" column="ReportsTo"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;property name="PhotoPath" column="PhotoPath"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;/class&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;组件的使用&lt;/p&gt;&#xD;
&lt;p&gt;当类和映射文件建立以后，就通过组件对类的操作来实现数据操作。为了实现动态配置，组件配置的方式和nhibernate是一样的，只是配置节有所不同。&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;configSections&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;section name="dataconfig" type="HFSoft.Data.DataConfigSectionHandler, HFSoft.Data, Version=0.9.1.0, Culture=neutral, PublicKeyToken=null" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;/configSections&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;dataconfig&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;DriverType value="HFSoft.Data.SqlDriver, HFSoft.Data, Version=0.9.1.0, Culture=neutral, PublicKeyToken=null"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;ConnectionString&amp;nbsp; value="data source=.;initial catalog=northwind;user id=sa;pwd=;"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;MappingAssemblys&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;Assembly value="NorthWind.Entitys"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;/MappingAssemblys&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;CacheCommands default="3"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;/dataconfig&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;添加一条雇员信息&lt;/p&gt;&#xD;
&lt;p&gt;HFSoft.Data.MappingContainer mapContainer = HFSoft.Data.MappingContainer.ConfigContainer;&lt;/p&gt;&#xD;
&lt;p&gt;using(HFSoft.Data.IDataSession session = mapContainer.OpenSession())&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;session.Open();&lt;/p&gt;&#xD;
&lt;p&gt;NorthWind.Entitys.Employees emp = new NorthWind.Entitys.Employees();&lt;/p&gt;&#xD;
&lt;p&gt;emp.ReportsTo = 3;&lt;/p&gt;&#xD;
&lt;p&gt;emp.FirstName ="fan";&lt;/p&gt;&#xD;
&lt;p&gt;emp.LastName = "henry";&lt;/p&gt;&#xD;
&lt;p&gt;emp.Photo = new byte[0];&lt;/p&gt;&#xD;
&lt;p&gt;emp.HireDate = DateTime.Parse("2002-12-31");&lt;/p&gt;&#xD;
&lt;p&gt;emp.BirthDate = DateTime.Parse("1979-1-28");&lt;/p&gt;&#xD;
&lt;p&gt;emp.City ="广州";&lt;/p&gt;&#xD;
&lt;p&gt;emp.Country ="中国";&lt;/p&gt;&#xD;
&lt;p&gt;session.Save(emp);&lt;/p&gt;&#xD;
&lt;p&gt;MessageBox.Show(emp.EmployeeID.ToString());&lt;/p&gt;&#xD;
&lt;p&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;获取所有雇员信息&lt;/p&gt;&#xD;
&lt;p&gt;using(HFSoft.Data.IDataSession session = mapContainer.OpenSession())&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;session.Open();&lt;/p&gt;&#xD;
&lt;p&gt;System.Collections.IList&amp;nbsp; myDS = session.List(typeof(NorthWind.Entitys.Employees),null);&lt;/p&gt;&#xD;
&lt;p&gt;this.dataGrid1.DataSource = myDS;&lt;/p&gt;&#xD;
&lt;p&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;多条件查询（雇员编号大于等于3并且小于等于10或者姓包含fan）&lt;/p&gt;&#xD;
&lt;p&gt;HFSoft.Data.Expression expression = new HFSoft.Data.Expression();&lt;/p&gt;&#xD;
&lt;p&gt;expression.Add(new HFSoft.Data.RtEqExpression(NorthWind.Entitys.Employees.F_EmployeeID,3));&lt;/p&gt;&#xD;
&lt;p&gt;expression.Add(new HFSoft.Data.LeEqExpression(NorthWind.Entitys.Employees.F_EmployeeID,10));&lt;/p&gt;&#xD;
&lt;p&gt;expression.Add(HFSoft.Data.UintType.Or,new HFSoft.Data.LikeExpression(NorthWind.Entitys.Employees.F_FirstName,"fan%"));&lt;/p&gt;&#xD;
&lt;p&gt;using(HFSoft.Data.IDataSession session = mapContainer.OpenSession())&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;session.Open();&lt;/p&gt;&#xD;
&lt;p&gt;System.Collections.IList&amp;nbsp; myDS = session.List(typeof(NorthWind.Entitys.Employees),expression);&lt;/p&gt;&#xD;
&lt;p&gt;this.dataGrid1.DataSource = myDS;&lt;/p&gt;&#xD;
&lt;p&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;获取雇员信息并修改&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;using(HFSoft.Data.IDataSession session = mapContainer.OpenSession())&lt;/p&gt;&#xD;
&lt;p&gt;{&lt;/p&gt;&#xD;
&lt;p&gt;session.Open();&lt;/p&gt;&#xD;
&lt;p&gt;NorthWind.Entitys.Employees emp = (NorthWind.Entitys.Employees)session.Load(typeof(NorthWind.Entitys.Employees),41);&lt;/p&gt;&#xD;
&lt;p&gt;emp.FirstName ="kfc";&lt;/p&gt;&#xD;
&lt;p&gt;session.Update(emp);&lt;/p&gt;&#xD;
&lt;p&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;组件为了提高效率，增加了缓存机制。可以通过配置文件制定对插入数据、修改数据的命令对象进行缓存的数量。当组件需要调用对象的插入命令时就会从缓存中找，当找不到的情况下才创建相关命令对象，这样会减少创建所带来的性能问题；同样缓存会占用相应的内存资源。组件现在还决少查询命令对象、数据集、实体对象的缓存。实体对象缓存比较复杂，中间还存在着和数据库信息同步、频繁锁的问题；还没有想到较好的解决方法，暂时没有打算把实体缓存集成到组件中。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;本文来自CSDN博客，转载请标明出处：&lt;a href="http://blog.csdn.net/henryfan1/archive/2005/09/06/472651.aspx" target="_blank"&gt;http://blog.csdn.net/henryfan1/archive/2005/09/06/472651.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Madream/aggbug/1696718.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Madream/articles/1696718.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Madream/articles/1695248.html</id><title type="text">无刷新分页控件(原创)(jQuery+json+ashx)(Ajax)</title><summary type="text">近来在做一个项目,有很多基本的信息表.但这些信息都只有一些增删改查的相关操作大多数表没有业务流的相关操作.要是每个表的增删改查相关功能都一个个去做一个管理页不单麻烦,也不算是一个程序员有的思想(不知道偷懒人程序员不算一个好的程序员)三四十来张表.每张表做两个管理页.就是七八十人页面.那我不想死.所以.就打算做一个通用的增删改查控件标题只是说一个分页显示控件,那还只是一个小点.主要是看到现在园子里对...</summary><published>2010-03-25T05:58:00Z</published><updated>2010-03-25T05:58:00Z</updated><author><name>Madream.F</name><uri>http://www.cnblogs.com/Madream/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Madream/articles/1695248.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Madream/articles/1695248.html"/><content type="html">&lt;p&gt;近来在做一个项目,&lt;/p&gt;&#xD;
&lt;p&gt;有很多基本的信息表.&lt;/p&gt;&#xD;
&lt;p&gt;但这些信息都只有一些增删改查的相关操作&lt;/p&gt;&#xD;
&lt;p&gt;大多数表没有业务流的相关操作.&lt;/p&gt;&#xD;
&lt;p&gt;要是每个表的增删改查相关功能都一个个去做一个管理页&lt;/p&gt;&#xD;
&lt;p&gt;不单麻烦,也不算是一个程序员有的思想(不知道偷懒人程序员不算一个好的程序员)&lt;/p&gt;&#xD;
&lt;p&gt;三四十来张表.每张表做两个管理页.就是七八十人页面.&lt;/p&gt;&#xD;
&lt;p&gt;那我不想死.&lt;/p&gt;&#xD;
&lt;p&gt;所以.就打算做一个通用的增删改查控件&lt;/p&gt;&#xD;
&lt;p&gt;标题只是说一个分页显示控件,那还只是一个小点.&lt;/p&gt;&#xD;
&lt;p&gt;主要是看到现在园子里对这个做的人比效多.可能会有些点击吧.呵.&lt;/p&gt;&#xD;
&lt;p&gt;主要是以前我也做过一个那个无刷新分页的.&lt;/p&gt;&#xD;
&lt;p&gt;一下园子里就有好多人加我QQ,&lt;/p&gt;&#xD;
&lt;p&gt;有的是要源代码(那个版本JS压缩了一下),&lt;/p&gt;&#xD;
&lt;p&gt;有的是要我教jQuery,&lt;/p&gt;&#xD;
&lt;p&gt;有是就是问我那个控件怎么用.&lt;/p&gt;&#xD;
&lt;p&gt;只不过那个是用ACCESS+VS2008(jQuery+ashx+json)做的&lt;/p&gt;&#xD;
&lt;p&gt;只不过看看现在的开发.用ACC来做数据库的(大项目).那是不可能的吧&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我们这个项目是用的SQL2005+VS2008&lt;/p&gt;&#xD;
&lt;p&gt;所以就在原来的基础上.更加一层的开发&lt;/p&gt;&#xD;
&lt;p&gt;(jQuery+ashx+json)&lt;/p&gt;&#xD;
&lt;p&gt;中间用到了josn的序列化与反序列化&lt;/p&gt;&#xD;
&lt;p&gt;反射,做了跨数据库接口等&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;当然,开始做的时候.&lt;/p&gt;&#xD;
&lt;p&gt;有一个好的设计方案是不可少的.&lt;/p&gt;&#xD;
&lt;p&gt;做的项目越多.就知道前期工作的重要性的.以前不怎么重视&lt;/p&gt;&#xD;
&lt;p&gt;在那个上面吃了大亏,就有了这个教训了&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;第一部分&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;下面是我的数据库设计,还有测试数据表结构设计&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjsonashxAjax_11FF9/GradView_2.jpg" target="_blank"&gt;&lt;img title="GradView" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="765" alt="GradView" src="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjsonashxAjax_11FF9/GradView_thumb.jpg" width="797" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;上面的五张表是控件要用的.&lt;/p&gt;&#xD;
&lt;p&gt;下面五张表是测试数据设计&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;第二部分&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;目录结构&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjsonashxAjax_11FF9/fiel_2.jpg" target="_blank"&gt;&lt;img title="fiel" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="663" alt="fiel" src="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjsonashxAjax_11FF9/fiel_thumb.jpg" width="270" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;Library里面,大家都是开发人员.这个结构看得懂吧(不知道这现设计好不好)&lt;/p&gt;&#xD;
&lt;p&gt;AjaxPages里面就是放ashx请求处理的页面的&lt;/p&gt;&#xD;
&lt;p&gt;主要是做了两个用户控件&lt;/p&gt;&#xD;
&lt;p&gt;EditGradView.ascx和ShowGradView.ascx&lt;/p&gt;&#xD;
&lt;p&gt;在ShowPage.aspx,EditPage.aspx分别引用这两个用户控件&lt;/p&gt;&#xD;
&lt;p&gt;先来看看效果吧&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjsonashxAjax_11FF9/1_2.jpg" target="_blank"&gt;&lt;img title="1" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="301" alt="1" src="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjsonashxAjax_11FF9/1_thumb.jpg" width="628" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1.上面的按钮是功能操作的,选择结果是一个接口&lt;/p&gt;&#xD;
&lt;p&gt;就是第一列,有选择框,当你选择了哪里行的时候.点那个选择结果就会把相应的主键值传给用户,&lt;/p&gt;&#xD;
&lt;p&gt;让用户自行处理怎么操作,&lt;/p&gt;&#xD;
&lt;p&gt;当然,在我这个项目里就做了个批量删除功能了&lt;/p&gt;&#xD;
&lt;p&gt;2.增加记录&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjsonashxAjax_11FF9/5_2.jpg" target="_blank"&gt;&lt;img title="5" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="544" alt="5" src="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjsonashxAjax_11FF9/5_thumb.jpg" width="501" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;就会根据你在配置表里配置的数据,&lt;/p&gt;&#xD;
&lt;p&gt;自动生成一个表单,这个表单就是这样的&lt;/p&gt;&#xD;
&lt;p&gt;这里实现了几种控件,&lt;/p&gt;&#xD;
&lt;p&gt;文本框,密码框,日期选择框,文件上传框,下拉框,多行文本框&lt;/p&gt;&#xD;
&lt;p&gt;文本框里又有正则表达式验证(在配置表里配置你要验证的类型),&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjsonashxAjax_11FF9/reg_2.jpg" target="_blank"&gt;&lt;img title="reg" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="99" alt="reg" src="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjsonashxAjax_11FF9/reg_thumb.jpg" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;日期就会自动出来一个日历控件&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjsonashxAjax_11FF9/rl_2.jpg" target="_blank"&gt;&lt;img title="rl" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="220" alt="rl" src="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjsonashxAjax_11FF9/rl_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;文件上传.就会通过一个假的(ajax:实际是创建一个iframe)新上传.把你文件上传上去.返回一个文件名到那个框里&lt;/p&gt;&#xD;
&lt;p&gt;下拉框:当然只有外键和字典的时候.就会出来下拉了&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3查询&lt;/p&gt;&#xD;
&lt;p&gt;点击查询的时候.也会自动根据你在配置表里配置的数据&lt;/p&gt;&#xD;
&lt;p&gt;自动在页页生成一个查询表单&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjsonashxAjax_11FF9/4_2.jpg" target="_blank"&gt;&lt;img title="4" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="404" alt="4" src="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjsonashxAjax_11FF9/4_thumb.jpg" width="499" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;同样也把你查询到的结果分页&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3.编辑,删除,自定义&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjsonashxAjax_11FF9/2_2.jpg" target="_blank"&gt;&lt;img title="2" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="346" alt="2" src="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjsonashxAjax_11FF9/2_thumb.jpg" width="389" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;会在每行的后面出现功能操作,当然你可以配置可以不可以有这些操作&lt;/p&gt;&#xD;
&lt;p&gt;在这里.编辑就会跳到一个编辑表单让你修改&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjsonashxAjax_11FF9/6_2.jpg" target="_blank"&gt;&lt;img title="6" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="468" alt="6" src="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjsonashxAjax_11FF9/6_thumb.jpg" width="428" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;也是和增加记录的表单一样.只不过这里还要把编辑的数据绑定上去&lt;/p&gt;&#xD;
&lt;p&gt;当然,在这里功能操作里,都有相应的接口&lt;/p&gt;&#xD;
&lt;p&gt;比如我点删除的时候,要自己写一个方法,&lt;/p&gt;&#xD;
&lt;p&gt;所以我就在每个功能操作里写了一个用户接口&lt;/p&gt;&#xD;
&lt;p&gt;只要你引用了的页面里写了一个这样的接口,&lt;/p&gt;&#xD;
&lt;p&gt;就会去调用你自己写的方法,没有的话.就执行自己写的方法&lt;/p&gt;&#xD;
&lt;p&gt;这样的话.我那个项目,三四十张表.&lt;/p&gt;&#xD;
&lt;p&gt;就可以只要配置一个配置表里面的信息&lt;/p&gt;&#xD;
&lt;p&gt;就全都可以自动的实现增删改查了&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://liuju150.cacacoo.com/" target="_blank"&gt;http://liuju150.cacacoo.com/&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在这里可以看到效果.只不过这不是我的空间,放到别人空间上去的&lt;/p&gt;&#xD;
&lt;p&gt;那里的SQL数据库的排序规则不和我的相同.&lt;/p&gt;&#xD;
&lt;p&gt;所以中文有些乱码了.&lt;/p&gt;&#xD;
&lt;p&gt;只不过还是可以看到效果的喽.&lt;br /&gt;&lt;br /&gt;json实体帮助类&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;img id="Code_Closed_Image_204558" onclick="code_collapse_toggle(this);" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"&gt;&lt;img id="Code_Open_Image_204558" style="display: none" onclick="code_collapse_toggle(this);" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"&gt;&lt;span  id="Code_Closed_Text_204558"&gt;Code&lt;/span&gt;&lt;span id="Code_Open_Text_204558" style="display: none"&gt;&lt;br /&gt;&lt;!--&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
--&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GradView.WebApp.App_Code&lt;br /&gt;&lt;img id="Codehighlighter1_35_1250_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_35_1250_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_35_1250_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_35_1250_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;JsonHelper&lt;br /&gt;&lt;img id="Codehighlighter1_69_1248_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_69_1248_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_69_1248_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_69_1248_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img id="Codehighlighter1_79_253_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_79_253_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_79_253_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter1_79_253_Open_Text"&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;生成Json格式&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;typeparam&amp;nbsp;name="T"&amp;gt;&amp;lt;/typeparam&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="obj"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GetJson&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;T&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;(T&amp;nbsp;obj)&lt;br /&gt;&lt;img id="Codehighlighter1_308_655_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_308_655_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_308_655_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_308_655_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataContractJsonSerializer&amp;nbsp;json&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DataContractJsonSerializer(obj.GetType());&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(MemoryStream&amp;nbsp;stream&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;MemoryStream())&lt;br /&gt;&lt;img id="Codehighlighter1_476_645_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_476_645_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_476_645_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_476_645_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;json.WriteObject(stream,&amp;nbsp;obj);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;szJson&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Encoding.UTF8.GetString(stream.ToArray());&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;szJson;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img id="Codehighlighter1_664_845_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_664_845_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_664_845_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter1_664_845_Open_Text"&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;获取Json的Model&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;typeparam&amp;nbsp;name="T"&amp;gt;&amp;lt;/typeparam&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="szJson"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;T&amp;nbsp;ParseFromJson&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;T&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;szJson)&lt;br /&gt;&lt;img id="Codehighlighter1_909_1242_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_909_1242_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_909_1242_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_909_1242_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;T&amp;nbsp;obj&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Activator.CreateInstance&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;T&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;();&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(MemoryStream&amp;nbsp;ms&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;MemoryStream(Encoding.UTF8.GetBytes(szJson)))&lt;br /&gt;&lt;img id="Codehighlighter1_1061_1232_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_1061_1232_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_1061_1232_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_1061_1232_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataContractJsonSerializer&amp;nbsp;serializer&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DataContractJsonSerializer(obj.GetType());&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(T)serializer.ReadObject(ms);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;json数据表帮助类&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;img id="Code_Closed_Image_204651" onclick="code_collapse_toggle(this);" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"&gt;&lt;img id="Code_Open_Image_204651" style="display: none" onclick="code_collapse_toggle(this);" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"&gt;&lt;span  id="Code_Closed_Text_204651"&gt;Code&lt;/span&gt;&lt;span id="Code_Open_Text_204651" style="display: none"&gt;&lt;br /&gt;&lt;!--&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
--&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GradView.WebApp.App_Code&lt;br /&gt;&lt;img id="Codehighlighter1_35_1662_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_35_1662_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_35_1662_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_35_1662_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;JsonTableHelper&lt;br /&gt;&lt;img id="Codehighlighter1_81_1660_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_81_1660_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_81_1660_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_81_1660_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img id="Codehighlighter1_91_233_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_91_233_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_91_233_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter1_91_233_Open_Text"&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;返回对象序列化&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="obj"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;源对象&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;json数据&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ToJson(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;obj)&lt;br /&gt;&lt;img id="Codehighlighter1_294_423_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_294_423_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_294_423_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_294_423_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JavaScriptSerializer&amp;nbsp;serialize&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;JavaScriptSerializer();&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;serialize.Serialize(obj);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;&lt;img id="Codehighlighter1_433_625_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_433_625_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_433_625_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter1_433_625_Open_Text"&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;控制深度&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="obj"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;源对象&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="recursionDepth"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;深度&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;json数据&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ToJson(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;obj,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;recursionDepth)&lt;br /&gt;&lt;img id="Codehighlighter1_706_890_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_706_890_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_706_890_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_706_890_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JavaScriptSerializer&amp;nbsp;serialize&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;JavaScriptSerializer();&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serialize.RecursionLimit&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;recursionDepth;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;serialize.Serialize(obj);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;&lt;img id="Codehighlighter1_900_1055_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_900_1055_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_900_1055_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter1_900_1055_Open_Text"&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;DataTable转为json&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="dt"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;DataTable&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;json数据&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ToJson(DataTable&amp;nbsp;dt)&lt;br /&gt;&lt;img id="Codehighlighter1_1113_1654_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_1113_1654_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_1113_1654_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_1113_1654_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dictionary&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;dic&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Dictionary&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;();&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;index&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(DataRow&amp;nbsp;dr&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;dt.Rows)&lt;br /&gt;&lt;img id="Codehighlighter1_1278_1612_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_1278_1612_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_1278_1612_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_1278_1612_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dictionary&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;result&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Dictionary&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;();&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(DataColumn&amp;nbsp;dc&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;dt.Columns)&lt;br /&gt;&lt;img id="Codehighlighter1_1437_1522_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_1437_1522_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_1437_1522_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_1437_1522_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;result.Add(dc.ColumnName,&amp;nbsp;dr[dc].ToString());&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dic.Add(index.ToString(),&amp;nbsp;result);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;index&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ToJson(dic);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/liuju150/archive/2009/09/11/1565009.html" target="_blank"&gt;http://www.cnblogs.com/liuju150/archive/2009/09/11/1565009.html&lt;/a&gt;&lt;br /&gt;这里是表单的反射操作&lt;br /&gt;&lt;br /&gt;数据操作方法&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;img id="Code_Closed_Image_212801" style="display: none" onclick="code_collapse_toggle(this);" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"&gt;&lt;img id="Code_Open_Image_212801" style="display: inline" onclick="code_collapse_toggle(this);" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"&gt;&lt;span  id="Code_Closed_Text_212801" style="display: none"&gt;Code&lt;/span&gt;&lt;span id="Code_Open_Text_212801" style="display: inline"&gt;&lt;br /&gt;&lt;!--&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
--&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GradView.Library.Data&lt;br /&gt;&lt;img id="Codehighlighter1_32_6051_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_32_6051_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_32_6051_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_32_6051_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img id="Codehighlighter1_36_205_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_36_205_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_36_205_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter1_36_205_Open_Text"&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;Title:&amp;nbsp;Classinfo类&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;Description:&amp;nbsp;Classinfo业务逻辑操作类&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;@author&amp;nbsp;LiuJu&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;@version&amp;nbsp;1.0.0.0&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;@date&amp;nbsp;2009-8-29&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;@modify&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;@date&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[DataObject(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="color: #000000"&gt;)]&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;partial&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;BizClassinfo&lt;br /&gt;&lt;img id="Codehighlighter1_261_6049_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_261_6049_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_261_6049_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_261_6049_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;IDataBaseOperate&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Classinfo&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;baseOperate&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;(IDataBaseOperate&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Classinfo&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;nbsp;DaoFactory.CreateInstance(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;DaoClassinfo&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img id="Codehighlighter1_401_6046_Closed_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&lt;img id="Codehighlighter1_401_6046_Open_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_401_6046_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;BaseOperation&lt;/span&gt;&lt;span id="Codehighlighter1_401_6046_Open_Text" style="display: none"&gt;&lt;span style="color: #0000ff"&gt;#region&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;BaseOperation&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img id="Codehighlighter1_428_564_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_428_564_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_428_564_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter1_428_564_Open_Text"&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;在dbo.ClassInfo中增加一条记录&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="model"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;包含被插入数据的实体对象&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;影响行数&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[DataObjectMethod(DataObjectMethodType.Insert)]&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Insert(Classinfo&amp;nbsp;model)&lt;br /&gt;&lt;img id="Codehighlighter1_660_811_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_660_811_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_660_811_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_660_811_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;(model&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;baseOperate.Insert(model);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ApplicationException(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;在dbo.ClassInfo中增加一条记录时,传递的参数model为Null！&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img id="Codehighlighter1_817_1000_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_817_1000_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_817_1000_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter1_817_1000_Open_Text"&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;在dbo.ClassInfo中新增一条记录,支持数据库事务&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="model"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;包含被插入数据的实体对象&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="trans"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;事务参数&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;影响行数&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[DataObjectMethod(DataObjectMethodType.Insert)]&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Insert(Classinfo&amp;nbsp;model,&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;trans)&lt;br /&gt;&lt;img id="Codehighlighter1_1109_1288_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_1109_1288_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_1109_1288_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_1109_1288_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;(model&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;trans&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;baseOperate.Insert(model,trans);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ApplicationException(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;在dbo.ClassInfo中增加一条记录时,传递的参数model,trans有错误！&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img id="Codehighlighter1_1294_1430_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_1294_1430_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_1294_1430_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter1_1294_1430_Open_Text"&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;在dbo.ClassInfo中删除一条记录&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="model"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;包含主键值的实体对象&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;所影响的行数&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[DataObjectMethod(DataObjectMethodType.Delete)]&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Delete(Classinfo&amp;nbsp;model)&lt;br /&gt;&lt;img id="Codehighlighter1_1526_1679_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_1526_1679_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_1526_1679_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_1526_1679_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;(model&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;baseOperate.Delete(model);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ApplicationException(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;在dbo.ClassInfo中删除一条记录时,传递的参数model为Null！&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img id="Codehighlighter1_1685_1868_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_1685_1868_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_1685_1868_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter1_1685_1868_Open_Text"&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;在dbo.ClassInfo中删除一条记录,支持数据库事务&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="model"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;包含主键值的实体对象&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="trans"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;事务参数&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;所影响的行数&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[DataObjectMethod(DataObjectMethodType.Delete)]&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Delete(Classinfo&amp;nbsp;model,&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;trans)&lt;br /&gt;&lt;img id="Codehighlighter1_1977_2156_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_1977_2156_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_1977_2156_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_1977_2156_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;(model&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;trans&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;)&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;baseOperate.Delete(model,trans);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ApplicationException(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;在dbo.ClassInfo中删除一条记录时,传递的参数model,trans有错误！&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img id="Codehighlighter1_2165_2303_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_2165_2303_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_2165_2303_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter1_2165_2303_Open_Text"&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;在dbo.ClassInfo中完整更新一条记录&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="model"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;包含被更新数据的实体对象&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;影响行数&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[DataObjectMethod(DataObjectMethodType.Update)]&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;Update(Classinfo&amp;nbsp;model)&lt;br /&gt;&lt;img id="Codehighlighter1_2400_2552_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_2400_2552_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_2400_2552_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_2400_2552_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;(model&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;baseOperate.Update(model);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ApplicationException(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;在dbo.ClassInfo中更新一条记录时,传递的参数model为Null！&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img id="Codehighlighter1_2558_2743_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_2558_2743_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_2558_2743_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter1_2558_2743_Open_Text"&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;在dbo.ClassInfo中完整更新一条记录,支持数据库事务&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="model"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;包含被更新数据的实体对象&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="trans"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;事务参数&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;影响行数&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[DataObjectMethod(DataObjectMethodType.Update)]&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Update(Classinfo&amp;nbsp;model,&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;trans)&lt;br /&gt;&lt;img id="Codehighlighter1_2852_3031_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_2852_3031_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_2852_3031_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_2852_3031_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;(model&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;trans&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;baseOperate.Update(model,trans);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ApplicationException(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;在dbo.ClassInfo中更新一条记录时,传递的参数model,trans有错误！&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img id="Codehighlighter1_3040_3231_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_3040_3231_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_3040_3231_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter1_3040_3231_Open_Text"&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;根据指定的Sql更新dbo.ClassInfo表中的一条记录&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="sql"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;Update的Sql语句&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="parms"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;sql参数&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;返回数据库受影响的记录数&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[DataObjectMethod(DataObjectMethodType.Update)]&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Update(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sql,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;[]&amp;nbsp;parms)&lt;br /&gt;&lt;img id="Codehighlighter1_3343_3524_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_3343_3524_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_3343_3524_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_3343_3524_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;(sql&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;parms&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;baseOperate.Update(sql,parms);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ApplicationException(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;根据指定的Sql在dbo.ClassInfo中更新一条记录时,传递的参数sql,parms有错误！&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;&lt;img id="Codehighlighter1_3529_3768_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_3529_3768_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_3529_3768_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter1_3529_3768_Open_Text"&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;根据指定的Sql更新dbo.ClassInfo表中的一条记录,支持数据库事务.&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="sql"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;Update的Sql语句&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="parms"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;sql参数&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="trans"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;事务参数&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;返回数据库受影响的记录数&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[DataObjectMethod(DataObjectMethodType.Update)]&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Update(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sql,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;[]&amp;nbsp;parms,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;trans)&lt;br /&gt;&lt;img id="Codehighlighter1_3894_4103_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_3894_4103_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_3894_4103_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_3894_4103_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;(sql&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;parms&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;trans&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;baseOperate.Update(sql,parms,trans);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ApplicationException(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;根据指定的Sql在dbo.ClassInfo中更新一条记录时,传递的参数sql,parms,trans有错误！&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img id="Codehighlighter1_4119_4240_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_4119_4240_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_4119_4240_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter1_4119_4240_Open_Text"&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;根据主键获取dbo.ClassInfo中的一条记录&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="id"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[DataObjectMethod(DataObjectMethodType.Select)]&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Classinfo&amp;nbsp;GetModel(Classinfo&amp;nbsp;model)&lt;br /&gt;&lt;img id="Codehighlighter1_4345_4510_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_4345_4510_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_4345_4510_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_4345_4510_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;(model&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;)&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;baseOperate.GetModel(model);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ApplicationException(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;根据主键获取dbo.ClassInfo中的一条记录时,传递的参数model为Null！&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img id="Codehighlighter1_4531_4650_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_4531_4650_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_4531_4650_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter1_4531_4650_Open_Text"&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;根据指定的SQL获取dbo.ClassInfo中的一条记录&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="sql"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;SQL语句&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;实体对象&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[DataObjectMethod(DataObjectMethodType.Select)]&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Classinfo&amp;nbsp;&amp;nbsp;GetModel(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sql,&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;[]&amp;nbsp;parms)&lt;br /&gt;&lt;img id="Codehighlighter1_4770_4947_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_4770_4947_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_4770_4947_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_4770_4947_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #000000"&gt;!&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.IsNullOrEmpty(sql))&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;baseOperate.GetModel(sql,parms);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ApplicationException(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;根据指定的SQL获取dbo.ClassInfo中的一条记录时,传递的参数sql为Null！&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img id="Codehighlighter1_4956_5041_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_4956_5041_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_4956_5041_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter1_4956_5041_Open_Text"&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;在dbo.ClassInfo中获取所有记录&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[DataObjectMethod(DataObjectMethodType.Select)]&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;IList&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;Classinfo&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GetList()&lt;br /&gt;&lt;img id="Codehighlighter1_5136_5174_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_5136_5174_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_5136_5174_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_5136_5174_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;baseOperate.GetList();&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img id="Codehighlighter1_5180_5314_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_5180_5314_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_5180_5314_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter1_5180_5314_Open_Text"&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;根据指定的SQL在dbo.ClassInfo中获取所有记录&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="sql"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;SQL语句&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;记录集&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[DataObjectMethod(DataObjectMethodType.Select)]&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;IList&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;Classinfo&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GetList(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sql,&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;[]&amp;nbsp;parms)&lt;br /&gt;&lt;img id="Codehighlighter1_5434_5610_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_5434_5610_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_5434_5610_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_5434_5610_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #000000"&gt;!&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.IsNullOrEmpty(sql))&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;baseOperate.GetList(sql,parms);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ApplicationException(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;根据指定的SQL在dbo.ClassInfo中获取所有记录时,传递的参数sql为Null！&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img id="Codehighlighter1_5617_5770_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_5617_5770_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_5617_5770_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;/**/&lt;/span&gt;&lt;span id="Codehighlighter1_5617_5770_Open_Text"&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;在dbo.ClassInfo中查询某条记录是否存在&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="model"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;包含主键值的实体对象&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;存在返加true,不存在返回false&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[DataObjectMethod(DataObjectMethodType.Select)]&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;bool&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Exists(Classinfo&amp;nbsp;model)&lt;br /&gt;&lt;img id="Codehighlighter1_5867_6030_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_5867_6030_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_5867_6030_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_5867_6030_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;(model&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;)&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;baseOperate.Exists(model);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ApplicationException(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;在dbo.ClassInfo中查询某条记录是否存在时,传递的参数model为Null！&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;#endregion&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div &gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;p&gt;续前面的无刷新分页控件,编辑,修改控件的实现,&lt;/p&gt;&#xD;
&lt;p&gt;(这里是地址:&lt;a title="http://www.cnblogs.com/liuju150/archive/2009/09/11/1564994.html" href="http://www.cnblogs.com/liuju150/archive/2009/09/11/1564994.html" target="_blank"&gt;&lt;font color="#d84d2d"&gt;http://www.cnblogs.com/liuju150/archive/2009/09/11/1564994.html&lt;/font&gt;&lt;/a&gt;)&lt;/p&gt;&#xD;
&lt;p&gt;那么,有三四十张表的话,&lt;/p&gt;&#xD;
&lt;p&gt;前台表单是自动生成的.&lt;/p&gt;&#xD;
&lt;p&gt;只不过生成的实体和数据库里的表名都是有规律可以找的.&lt;/p&gt;&#xD;
&lt;p&gt;还有操作实体的类,&lt;/p&gt;&#xD;
&lt;p&gt;所以我只要通过前台把表单传过来.&lt;/p&gt;&#xD;
&lt;p&gt;我就可以知道要反射到哪个实体,&lt;/p&gt;&#xD;
&lt;p&gt;然后对实体进行相应的赋值.&lt;/p&gt;&#xD;
&lt;p&gt;再反射一个实体操作的类.&lt;/p&gt;&#xD;
&lt;p&gt;就可以实现对实体的增删改操作了&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjson_12A64/2_2.jpg" target="_blank"&gt;&lt;img title="2" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="237" alt="2" src="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjson_12A64/2_thumb.jpg" width="207" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;上面是我的数据库表名&lt;/p&gt;&#xD;
&lt;p&gt;下面是我的实体,和实体操作的类名&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjson_12A64/1_4.jpg" target="_blank"&gt;&lt;img title="1" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="397" alt="1" src="http://images.cnblogs.com/cnblogs_com/liuju150/WindowsLiveWriter/jQueryjson_12A64/1_thumb_1.jpg" width="202" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;img id="Code_Closed_Image_212237" style="display: none" onclick="code_collapse_toggle(this);" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"&gt;&lt;img id="Code_Open_Image_212237" style="display: inline" onclick="code_collapse_toggle(this);" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"&gt;&lt;span  id="Code_Closed_Text_212237" style="display: none"&gt;Code&lt;/span&gt;&lt;span id="Code_Open_Text_212237" style="display: inline"&gt;&lt;br /&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;InsertAndUpdateObj(HttpContext&amp;nbsp;context)&lt;br /&gt;&lt;img id="Codehighlighter1_61_2225_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_61_2225_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_61_2225_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_61_2225_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ClassName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;context.Request.Form[&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;ClassName&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;].ToString();&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ClassData&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;context.Request.Form[&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;ClassData&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;].ToString();&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;IntOrUpd&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;context.Request.Form[&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;isIns&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;].ToString();&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;[]&amp;nbsp;ClassNameArray&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ClassName.Split(&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;_&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;CNStr&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;""&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ClassNameArray.Length;&amp;nbsp;i&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;img id="Codehighlighter1_453_581_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_453_581_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_453_581_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_453_581_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CNStr&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ClassNameArray[i].Substring(&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;).ToUpper()&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ClassNameArray[i].Substring(&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;).ToLower();&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ClassName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;CNStr;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;反射实体&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Assembly&amp;nbsp;Ab&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Assembly.Load(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;GradView.Library&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Type&amp;nbsp;type&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Ab.GetType(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;GradView.Library.Data.&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ClassName,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;obj&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Activator.CreateInstance(type);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataContractJsonSerializer&amp;nbsp;dcjs&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DataContractJsonSerializer(type);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MemoryStream&amp;nbsp;ms&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;MemoryStream(Encoding.UTF8.GetBytes(ClassData));&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;dcjs.ReadObject(ms);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;反射业务操作&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;opName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Biz&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ClassName;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;opMethod&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Insert&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;switch&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(IntOrUpd)&lt;br /&gt;&lt;img id="Codehighlighter1_1195_1425_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_1195_1425_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_1195_1425_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_1195_1425_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;0&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&amp;nbsp;opMethod&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Update&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;1&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&amp;nbsp;opMethod&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Insert&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;2&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&amp;nbsp;opMethod&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Delete&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;default&lt;/span&gt;&lt;span style="color: #000000"&gt;:&amp;nbsp;opMethod&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Insert&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Type&amp;nbsp;opType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Ab.GetType(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;GradView.Library.Data.&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;opName,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;opObj&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Activator.CreateInstance(opType);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MethodInfo[]&amp;nbsp;mi&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;opType.GetMethods();&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;mi.Length;&amp;nbsp;i&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;img id="Codehighlighter1_1782_2215_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_1782_2215_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_1782_2215_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_1782_2215_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(mi[i].Name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;opMethod)&lt;br /&gt;&lt;img id="Codehighlighter1_1844_2201_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_1844_2201_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_1844_2201_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_1844_2201_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img id="Codehighlighter1_1881_1963_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_1881_1963_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;[]&amp;nbsp;par&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_1881_1963_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_1881_1963_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&amp;nbsp;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img id="Codehighlighter1_2009_2113_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_2009_2113_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_2009_2113_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_2009_2113_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mi[i].Invoke(opObj,&amp;nbsp;par);&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;catch&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img id="Codehighlighter1_2160_2183_Open_Image" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"&gt;&lt;img id="Codehighlighter1_2160_2183_Closed_Image" style="display: none" onclick="code_collapse_toggle(this);" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="Codehighlighter1_2160_2183_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif" /&gt;&lt;/span&gt;&lt;span id="Codehighlighter1_2160_2183_Open_Text"&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;p&gt;所以我只要写这样的方法来实现,&lt;/p&gt;&#xD;
&lt;p&gt;前台就可以通过jQuery把表单里的值组成json&lt;/p&gt;&#xD;
&lt;p&gt;后台接收这个json&lt;/p&gt;&#xD;
&lt;p&gt;就可以对实体进行相应的操作了&lt;/p&gt;&lt;/div&gt;&lt;span style="display: inline"&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/Madream/aggbug/1695248.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Madream/articles/1695248.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Madream/articles/1692554.html</id><title type="text">CodeSmith生成多个表</title><summary type="text">一、把选中的多个表生成实体类我们会生成一个表的实体类了，那么一次生成多个表的实体类就可以在此基础上实现了。实现思路：在前面我们制作的实体类生成模板只能生成一个表，现在我们编写一个新的模板，在该模板中注册原来实体类模板。这样我们就可以在这个新的模板中生成多个原实体类模板的对象，然后调用原对象的呈现方法，来生成代码例：己有一个实体类生成模板EntitySingle.cst,现在我们制作一个新的模板，并...</summary><published>2010-03-23T06:00:00Z</published><updated>2010-03-23T06:00:00Z</updated><author><name>Madream.F</name><uri>http://www.cnblogs.com/Madream/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Madream/articles/1692554.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Madream/articles/1692554.html"/><content type="html">&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;一、把选中的多个表生成实体类&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;我们会生成一个表的实体类了，那么一次生成多个表的实体类就可以在此基础上实现了。&lt;br /&gt;&lt;strong&gt;实现思路：&lt;/strong&gt;&lt;br /&gt;在前面我们制作的实体类生成模板只能生成一个表，现在我们编写一个新的模板，在该模板中注册原来实体类模板。这样我们就可以在这个新的模板中生成多个原实体类模板的对象，然后调用原对象的呈现方法，来生成代码&lt;br /&gt;&lt;strong&gt;例：己有一个实体类生成模板EntitySingle.cst,现在我们制作一个新的模板，并在新模板中注册EntitySingle.cst模板&lt;/strong&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;lt;%@ CodeTemplate Language="C#" TargetLanguage="Text" Src="" Inherits="" Debug="False" Description="" %&amp;gt;&lt;br /&gt;&amp;lt;%@ Property Name="TDB" Type="SchemaExplorer.TableSchemaCollection" Default="" Optional="False" Category=""%&amp;gt;&lt;br /&gt;&lt;strong&gt;&amp;lt;%@ Register Name="SE" Template="EntitySingle.cst" MergeProperties="False" ExcludeProperties="" %&amp;gt;&lt;br /&gt;&lt;/strong&gt;&amp;lt;%@ Assembly Name="SchemaExplorer" %&amp;gt;&lt;br /&gt;&amp;lt;%@ Assembly Name="System.Da&lt;wbr&gt;ta" %&amp;gt;&lt;br /&gt;&amp;lt;%@ Imp&lt;wbr&gt;ort Namespace="SchemaExplorer" %&amp;gt;&lt;br /&gt;&amp;lt;%@ Imp&lt;wbr&gt;ort Namespace="System.Da&lt;wbr&gt;ta" %&amp;gt;&lt;br /&gt;&amp;lt;%@ Imp&lt;wbr&gt;ort Namespace="System.Collections" %&amp;gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt;foreach(TableSchema ts in TDB)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;SE s = new SE();&lt;br /&gt;&amp;nbsp;&amp;nbsp; s.TTable = ts;&lt;br /&gt;&amp;nbsp;&amp;nbsp; s.Render(this.Response);&lt;br /&gt;&lt;/strong&gt;}&lt;br /&gt;%&amp;gt;&lt;br /&gt;&amp;lt;script runat="template"&amp;gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/font&gt;说明：&lt;br /&gt;&lt;strong&gt;&amp;lt;%@ Register Name="SE" Template="EntitySingle.cst" MergeProperties="False" ExcludeProperties="" %&amp;gt;&lt;br /&gt;这句就是把EntitySingle.cst注册到当前模板中，名称是SE。&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ Property Name="TDB" Type="SchemaExplorer.TableSchemaCollection" Default="" Optional="False" Category=""%&amp;gt;&lt;br /&gt;这句定义了一个表集合的属性，以便用户从中选择多个表来生成它们的实体类&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div align="center" forimg="1"&gt;&lt;img title="CodeSmith(四) - Tony - Go ahead!" alt="CodeSmith(四) - Tony - Go ahead!" src="http://img.blog.163.com/photo/2VljjdFUFViTFSXdhkAHmg==/2265592087545715519.jpg" border="0" small="0" /&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;strong&gt;SE s = new SE();&lt;br /&gt;实例化SE这个模板对象&lt;br /&gt;&lt;br /&gt;s.TTable = ts;&lt;br /&gt;为EntitySingle.cst模板实例中的TTable属性进行赋值&lt;br /&gt;&lt;br /&gt;s.Render(this.Response);&lt;br /&gt;调用SE对象（EntitySingle.cst模板实例）的呈现方法，把该表的实体类代码生成出来。&lt;/strong&gt;&lt;br /&gt;运行结果：&lt;/p&gt;&#xD;
&lt;div align="center" forimg="1"&gt;&lt;img title="CodeSmith(四) - Tony - Go ahead!" alt="CodeSmith(四) - Tony - Go ahead!" src="http://img.blog.163.com/photo/oS-VjzjVjnM0tf3dZIm6Tg==/2265592087545715521.jpg" border="0" small="0" /&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size="3"&gt;二、把单个表的实体类生成到文件中去&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;上面的例子中虽然可以同时生成多个实体类，但是它全都显示在右边的输出区域，还需要我们收动复制粘贴放到源文件中去。这里我们主要研究如何把生成的代码输出到指定的文件中去。&lt;br /&gt;在CodeSmith中，&lt;strong&gt;CodeTemplate.Render方法&lt;/strong&gt;用来修改CodeSmith输出时的事件处理。可以通过重写Render方法来修改模版输出时的方式。&lt;br /&gt;&lt;strong&gt;Render方法：&lt;br /&gt;public override void Render(TextWriter writer)&lt;br /&gt;｛}&lt;br /&gt;&lt;/strong&gt;例：在模板的默认输出的基础上，加上把结果输出到文件的功能&lt;br /&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;public override void Render(TextWriter tw)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; StreamWriter fs1 = new StreamWriter("c:\\"+TTable.Name.ToString()+".cs",true);&lt;br /&gt;&amp;nbsp;&amp;nbsp; this.Response.AddTextWriter(fs1);&lt;br /&gt;&amp;nbsp;&amp;nbsp; base.Render(tw);&lt;br /&gt;&amp;nbsp;&amp;nbsp; fs1.Close();&lt;br /&gt;}&lt;/strong&gt;&lt;br /&gt;&lt;/font&gt;说明：这里一定要加入base.Render(tw)的调用，否则得不到默认的输出。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;FileNameEditor类：&lt;/strong&gt;&lt;br /&gt;FileNameEditor类给我们提供了在CodeSmith属性面板中弹出打开或保存文件对话框的方式，在使用时，首先在模版中得添加对程序集&lt;strong&gt;CodeSmith.CustomProperties&lt;/strong&gt;的引用。然后就可以在模版中定义一个属性来使用FileNameEditor。&lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;lt;%@ CodeTemplate Language="C#" TargetLanguage="Text" Src="" Inherits="" Debug="False" Description="" %&amp;gt;&lt;br /&gt;&lt;strong&gt;&amp;lt;%@ Assembly Name="CodeSmith.CustomProperties" %&amp;gt;&lt;br /&gt;&amp;lt;%@ Imp&lt;wbr&gt;ort Namespace="CodeSmith.CustomProperties" %&amp;gt;&lt;/strong&gt;&lt;br /&gt;&amp;lt;script runat="template"&amp;gt;&lt;br /&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; private string _filename;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;[Editor(typeof(FileNameEditor),typeof(System.Drawing.Design.UITypeEditor)),FileDialogAttribute(FileDialogType.Save,Title="save as",Filter="C# File|(*.cs)")]&lt;br /&gt;&amp;nbsp;&amp;nbsp; public string TargetFileName&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return _filename;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _filename = value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/font&gt;FileDialogAttribute类：设置对话框的样式&lt;br /&gt;&amp;nbsp;&amp;nbsp; FileDialogType：对话框的方式(打开/关闭)，如：FileDialogType.Save&lt;br /&gt;&amp;nbsp;&amp;nbsp; Filter：文件类型过滤器，如：Filter="C# File|(*.cs)"&lt;br /&gt;&amp;nbsp;&amp;nbsp; Title：对话框的标题。如：Title="保存"&lt;br /&gt;&amp;nbsp;&amp;nbsp; DefaultExtension：文件默认的扩展名&lt;br /&gt;&amp;nbsp;&amp;nbsp; CheckFileExists：true-只能选择己存在的文件&lt;br /&gt;&amp;nbsp;&amp;nbsp; CheckPathExists：true-只允许使用己存在路径&lt;/p&gt;&#xD;
&lt;div align="center" forimg="1"&gt;&lt;img title="CodeSmith(四) - Tony - Go ahead!" alt="CodeSmith(四) - Tony - Go ahead!" src="http://img.blog.163.com/photo/AZ9iUMzj6i6zPpeEX5Ks9Q==/2265592087545715522.jpg" border="0" small="0" /&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;以下代码将生成的实体类输出到对应的.CS文件中去&lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;lt;%@ CodeTemplate Language="C#" TargetLanguage="Text" Src="" Inherits="" Debug="False" Description="Template description here." %&amp;gt;&lt;br /&gt;&lt;strong&gt;&amp;lt;%@ Property Name="TTable" Type="SchemaExplorer.TableSchema" Default="" Optional="False" Category="" Description="" On&lt;wbr&gt;Changed="" Editor="" EditorBase="" Serializer="" %&amp;gt;&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;&amp;lt;%@ Assembly Name="CodeSmith.CustomProperties" %&amp;gt;&lt;br /&gt;&lt;/strong&gt;&amp;lt;%@ Assembly Name="System.Da&lt;wbr&gt;ta" %&amp;gt;&lt;br /&gt;&amp;lt;%@ Assembly Name="SchemaExplorer" %&amp;gt;&lt;br /&gt;&amp;lt;%@ Imp&lt;wbr&gt;ort Namespace="System.Da&lt;wbr&gt;ta" %&amp;gt;&lt;br /&gt;&amp;lt;%@ Imp&lt;wbr&gt;ort Namespace="SchemaExplorer" %&amp;gt;&lt;br /&gt;&amp;lt;%@ Imp&lt;wbr&gt;ort Namespace="System.IO" %&amp;gt;&lt;br /&gt;&lt;strong&gt;&amp;lt;%@ Imp&lt;wbr&gt;ort Namespace="CodeSmith.CustomProperties" %&amp;gt;&lt;/strong&gt;&lt;br /&gt;using System;&lt;br /&gt;&amp;lt;%&lt;br /&gt;string classname = TTable.Name.ToUpper().Substring(0,1)+TTable.Name.ToLower().Substring(1,TTable.Name.Length-1);&lt;br /&gt;string entitytype="";&lt;br /&gt;string entityname="";&lt;br /&gt;%&amp;gt;&lt;br /&gt;public class &amp;lt;%=classname%&amp;gt;Da&lt;wbr&gt;ta&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;%for(int i=0;i&amp;lt;TTable.Columns.Count;i++){%&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;%if(!TTable.Columns[i].IsForeignKeyMember){%&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private &amp;lt;%=CreateColumnType(TTable.Columns[i])%&amp;gt; _&amp;lt;%=TTable.Columns[i].Name.ToLower()%&amp;gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;%}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach(TableKeySchema tks in TTable.ForeignKeys)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach(MemberColumnSchema mcs in tks.ForeignKeyMemberColumns)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(mcs.Name == TTable.Columns[i].Name)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; entityname = tks.PrimaryKeyTable.Name.ToUpper().Substring(0,1)+tks.PrimaryKeyTable.Name.ToLower().Substring(1,tks.PrimaryKeyTable.Name.Length-1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; entitytype = entityname+"Da&lt;wbr&gt;ta";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private &amp;lt;%=entitytype%&amp;gt; _&amp;lt;%=entityname.ToLower()%&amp;gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;%}%&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;%if(!TTable.Columns[i].IsForeignKeyMember){%&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public &amp;lt;%=CreateColumnType(TTable.Columns[i])%&amp;gt; &amp;lt;%=TTable.Columns[i].Name.ToUpper().Substring(0,1)+TTable.Columns[i].Name.ToLower().Substring(1,TTable.Columns[i].Name.Length-1)%&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return _&amp;lt;%=TTable.Columns[i].Name.ToLower()%&amp;gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _&amp;lt;%=TTable.Columns[i].Name.ToLower()%&amp;gt; = value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;%}else{%&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public &amp;lt;%=entitytype%&amp;gt; &amp;lt;%=entityname.ToUpper().Substring(0,1)+entityname.ToLower().Substring(1,entityname.Length-1)%&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return _&amp;lt;%=entityname.ToLower()%&amp;gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _&amp;lt;%=entityname.ToLower()%&amp;gt; = value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;%}%&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;%}%&amp;gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&amp;lt;script runat="template"&amp;gt;&lt;br /&gt;private string _savefile;&lt;br /&gt;&lt;strong&gt;[Editor(typeof(FileNameEditor),typeof(System.Drawing.Design.UITypeEditor)),FileDialogAttribute(FileDialogType.Save,Title="save as",Filter="C# File|(*.cs)")]&lt;br /&gt;public string SaveFile&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; get&lt;br /&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return _savefile;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; set&lt;br /&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _savefile = value;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;public override void Render(TextWriter tw)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; StreamWriter fs1 = new StreamWriter(_savefile,true);&lt;br /&gt;&amp;nbsp;&amp;nbsp; this.Response.AddTextWriter(fs1);&lt;br /&gt;&amp;nbsp;&amp;nbsp; base.Render(tw);&lt;br /&gt;&amp;nbsp;&amp;nbsp; fs1.Close();&lt;br /&gt;}&lt;br /&gt;&lt;/strong&gt;private string CreateColumnType(ColumnSchema cs)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; switch(cs.DataType)&lt;br /&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case DbType.AnsiString:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case DbType.String:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "string";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case DbType.Binary:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "byte[]";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case DbType.Boolean:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "bool";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case DbType.Date:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case DbType.DateTime:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case DbType.Time:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "DateTime";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case DbType.Int16:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case DbType.Int32:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case DbType.Int64:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case DbType.UInt16:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case DbType.UInt32:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case DbType.UInt64:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "int";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "object";&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;strong&gt;&lt;font size="3"&gt;三、将多个表的实体类生成到文件中去&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;将多个表的实体类生成到文件中去实际上是把上面两种方法进行结合。&lt;br /&gt;&lt;strong&gt;思路：&lt;/strong&gt;&lt;br /&gt;1.建立能够生成一个实体类的模板A，并设置一个TableSchema属性和文件路径属性&lt;br /&gt;2.建立另一个模板B，其中注册引用上面的实体类模板&lt;br /&gt;3.在模板B中加入一个TableSchemaCollection的属性，以选择对哪些表生成实体类&lt;br /&gt;4.在模板B中加入一个属性用以选择将生成的实体类文件放在哪个目录中&lt;br /&gt;5.在模板B中生成模板A的实例，并为模板A的两个属性赋值&lt;br /&gt;6.设用Render方法实现输出&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;FolderNameEditor类：路径选择对话框&lt;br /&gt;&lt;/strong&gt;&amp;lt;script runat="template"&amp;gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;private string _filename;&lt;br /&gt;[Editor(typeof(System.Windows.Forms.Design.FileNameEditor),typeof(System.Drawing.Design.UITypeEditor))]&lt;br /&gt;public string TargetFileName&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; get&lt;br /&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return _filename;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; set&lt;br /&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _filename = value;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;代码：&lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;lt;%@ CodeTemplate Language="C#" TargetLanguage="Text" Src="" Inherits="" Debug="False" Description="Template description here." %&amp;gt;&lt;br /&gt;&lt;strong&gt;&amp;lt;%@ Property Name="tb" Type="SchemaExplorer.TableSchemaCollection" Default="" Optional="True" Category="Strings" Description="This is a sample string property." %&amp;gt;&lt;br /&gt;&amp;lt;%@ Register Name="sge" Template="Entitysingle.cst" MergeProperties="False" ExcludeProperties="" %&amp;gt;&lt;br /&gt;&amp;lt;%@ Assembly Name="CodeSmith.CustomProperties" %&amp;gt;&lt;/strong&gt;&lt;br /&gt;&amp;lt;%@ Assembly Name="SchemaExplorer" %&amp;gt;&lt;br /&gt;&amp;lt;%@ Assembly Name="System.Da&lt;wbr&gt;ta" %&amp;gt;&lt;br /&gt;&amp;lt;%@ Imp&lt;wbr&gt;ort Namespace="SchemaExplorer" %&amp;gt;&lt;br /&gt;&amp;lt;%@ Imp&lt;wbr&gt;ort Namespace="System.Da&lt;wbr&gt;ta" %&amp;gt;&lt;br /&gt;&lt;strong&gt;&amp;lt;%@ Imp&lt;wbr&gt;ort Namespace="System.IO" %&amp;gt;&lt;/strong&gt;&lt;br /&gt;&amp;lt;%@ Imp&lt;wbr&gt;ort Namespace="System.Windows.Forms.Design" %&amp;gt;&lt;br /&gt;&lt;strong&gt;&amp;lt;%@ Imp&lt;wbr&gt;ort Namespace="CodeSmith.CustomProperties" %&amp;gt;&lt;/strong&gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt;&lt;strong&gt;foreach(TableSchema ts in tb)&lt;br /&gt;{&lt;br /&gt;sge s = new sge();&lt;br /&gt;s.TTable = ts;&lt;br /&gt;s.SaveFile = this.GeneratePath+"&lt;/strong&gt;&lt;/font&gt;&lt;a href="http://www.cnblogs.com/Madream/admin/file://%22+s.ttable.name.tostring()+%22.cs/" target="_blank"&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;\\"+s.TTable.Name.ToString()+".cs&lt;/strong&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;";&lt;br /&gt;s.Render(this.Response);&lt;br /&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font color="#0000ff"&gt;%&amp;gt;&lt;br /&gt;&amp;lt;script runat="template"&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;private string _path;&lt;br /&gt;[Editor(typeof(System.Windows.Forms.Design.FolderNameEditor),typeof(System.Drawing.Design.UITypeEditor))]&lt;br /&gt;public string GeneratePath&lt;br /&gt;{&lt;br /&gt;get&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; return _path;&lt;br /&gt;}&lt;br /&gt;set&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; _path = value;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/strong&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div align="center" forimg="1"&gt;&lt;img title="CodeSmith(四) - Tony - Go ahead!" alt="CodeSmith(四) - Tony - Go ahead!" src="http://img.blog.163.com/photo/TFKsTHzyuZpTv5CGhJzOXw==/2265592087545715523.jpg" border="0" small="0" /&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/Madream/aggbug/1692554.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Madream/articles/1692554.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
