<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_助人为快乐之本！</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/13272/rss</id><updated>2012-05-16T09:44:54Z</updated><author><name>feiyun0112</name><uri>http://www.cnblogs.com/feiyun0112/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/feiyun0112/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/13272/rss"/><entry><id>http://www.cnblogs.com/feiyun0112/archive/2012/04/11/2440671.html</id><title type="text">[SQL.反模式].(SQL.Antipatterns) 读书笔记</title><summary type="text">SQL.反模式</summary><published>2012-04-11T07:11:00Z</published><updated>2012-04-11T07:11:00Z</updated><author><name>feiyun0112</name><uri>http://www.cnblogs.com/feiyun0112/</uri></author><link rel="alternate" href="http://www.cnblogs.com/feiyun0112/archive/2012/04/11/2440671.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/feiyun0112/archive/2012/04/11/2440671.html"/><content type="html">&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;反模式:树型结构怎么设计？在表中加parentid&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red;"&gt;解决方案：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red;"&gt;1.Sql Server 2005&amp;nbsp;可以用&lt;/span&gt;&lt;strong style="color: red;"&gt;Common Table Expressions (CTE)&lt;/strong&gt;&lt;/p&gt;&lt;strong&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;WITH&lt;/span&gt;&amp;nbsp;CommentTree&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(comment_id,&amp;nbsp;bug_id,&amp;nbsp;parent_id,&amp;nbsp;author,&amp;nbsp;comment,&amp;nbsp;depth)&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;depth&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt;&amp;nbsp;Comments&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;WHERE&lt;/span&gt;&amp;nbsp;parent_id&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;IS&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;UNION&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;ALL&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&amp;nbsp;c.&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;,&amp;nbsp;ct.depth&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;depth&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt;&amp;nbsp;CommentTree&amp;nbsp;ct&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;JOIN&lt;/span&gt;&amp;nbsp;Comments&amp;nbsp;c&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ON&lt;/span&gt;&amp;nbsp;(ct.comment_id&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;c.parent_id)&lt;br /&gt;)&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt;&amp;nbsp;CommentTree&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;WHERE&lt;/span&gt;&amp;nbsp;bug_id&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1234&lt;/span&gt;;&lt;/div&gt;&lt;/div&gt;&lt;/strong&gt;&lt;p&gt;&lt;span style="color: red;"&gt;2.建专门的表存祖孙关系，包括自身，即使跨级&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;CREATE&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;TABLE&lt;/span&gt; TreePaths (&lt;br /&gt;&amp;nbsp; ancestor&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 0, 255);"&gt;BIGINT&lt;/span&gt; UNSIGNED &lt;span style="color: rgb(128, 128, 128);"&gt;NOT&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;,&lt;br /&gt;&amp;nbsp; descendant&amp;nbsp; &lt;span style="color: rgb(0, 0, 255);"&gt;BIGINT&lt;/span&gt; UNSIGNED &lt;span style="color: rgb(128, 128, 128);"&gt;NOT&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;,&lt;br /&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 255);"&gt;PRIMARY&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;KEY&lt;/span&gt;(ancestor, descendant),&lt;br /&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 255);"&gt;FOREIGN&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;KEY&lt;/span&gt; (ancestor) &lt;span style="color: rgb(0, 0, 255);"&gt;REFERENCES&lt;/span&gt; Comments(comment_id),&lt;br /&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 255);"&gt;FOREIGN&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;KEY&lt;/span&gt; (descendant) &lt;span style="color: rgb(0, 0, 255);"&gt;REFERENCES&lt;/span&gt; Comments(comment_id)&lt;br /&gt;);&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;1&lt;/span&gt;&amp;nbsp;--&lt;span style="color: rgb(128, 0, 128);"&gt;2&lt;/span&gt;--&lt;span style="color: rgb(128, 0, 128);"&gt;3&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;|&lt;br /&gt;&amp;nbsp;&amp;nbsp;--&lt;span style="color: rgb(128, 0, 128);"&gt;4&lt;/span&gt;--&lt;span style="color: rgb(128, 0, 128);"&gt;5&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--&lt;span style="color: rgb(128, 0, 128);"&gt;6&lt;/span&gt;--&lt;span style="color: rgb(128, 0, 128);"&gt;7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;d&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;d&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;d&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;span style="color: rgb(0, 128, 128);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;----------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(128, 0, 0); font-weight: bold;"&gt;2&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;2&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(128, 0, 0); font-weight: bold;"&gt;5&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;2&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(128, 0, 0); font-weight: bold;"&gt;2&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;3&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(128, 0, 0); font-weight: bold;"&gt;6&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;6&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;3&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(128, 0, 0); font-weight: bold;"&gt;3&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;3&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(128, 0, 0); font-weight: bold;"&gt;6&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;7&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;4&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(128, 0, 0); font-weight: bold;"&gt;4&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;4&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(128, 0, 0); font-weight: bold;"&gt;7&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;7&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;5&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(128, 0, 0); font-weight: bold;"&gt;4&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;6&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(128, 0, 0); font-weight: bold;"&gt;4&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;6&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;7&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(128, 0, 0); font-weight: bold;"&gt;4&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;/*&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;child&amp;nbsp;for&amp;nbsp;4&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt;&amp;nbsp;TreePaths&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;WHERE&lt;/span&gt;&amp;nbsp;ancestor&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;4&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;AND&lt;/span&gt;&amp;nbsp;path_length&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;/*&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;insert&amp;nbsp;8&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;INSERT&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;INTO&lt;/span&gt;&amp;nbsp;TreePaths&amp;nbsp;(ancestor,&amp;nbsp;descendant)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&amp;nbsp;t.ancestor,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;8&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt;&amp;nbsp;TreePaths&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;t&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;WHERE&lt;/span&gt;&amp;nbsp;t.descendant&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;5&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;UNION&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;ALL&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;8&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;8&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;/*&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;move&amp;nbsp;6&amp;nbsp;under&amp;nbsp;3&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;START:delete&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;DELETE&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt;&amp;nbsp;TreePaths&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;WHERE&lt;/span&gt;&amp;nbsp;descendant&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;IN&lt;/span&gt;&amp;nbsp;(&lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&amp;nbsp;descendant&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;&lt;span style="color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt;&amp;nbsp;TreePaths&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;&lt;span style="color: rgb(0, 0, 255);"&gt;WHERE&lt;/span&gt;&amp;nbsp;ancestor&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;6&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;AND&lt;/span&gt;&amp;nbsp;ancestor&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;IN&lt;/span&gt;&amp;nbsp;(&lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&amp;nbsp;ancestor&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;span style="color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt;&amp;nbsp;TreePaths&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;span style="color: rgb(0, 0, 255);"&gt;WHERE&lt;/span&gt;&amp;nbsp;descendant&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;6&lt;/span&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;&lt;span style="color: rgb(128, 128, 128);"&gt;AND&lt;/span&gt;&amp;nbsp;ancestor&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;!=&lt;/span&gt;&amp;nbsp;descendant);&lt;br /&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;END:delete&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;START:reinsert&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;INSERT&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;INTO&lt;/span&gt;&amp;nbsp;TreePaths&amp;nbsp;(ancestor,&amp;nbsp;descendant)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&amp;nbsp;supertree.ancestor,&amp;nbsp;subtree.descendant&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt;&amp;nbsp;TreePaths&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;supertree&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;CROSS&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;JOIN&lt;/span&gt;&amp;nbsp;TreePaths&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;subtree&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;WHERE&lt;/span&gt;&amp;nbsp;supertree.descendant&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;3&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;AND&lt;/span&gt;&amp;nbsp;subtree.ancestor&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;6&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;END:reinsert&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;反模式:不加Foreign Key，  因为修改数据时麻烦&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red;"&gt;解决方案：一定要添加约束, 保证数据一致性&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;反模式:一个表的数据可能给A表，也可能给B表用，怎么办？加个type区分&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red;"&gt;解决方案：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red;"&gt;1.加个中间关联表，保证1对多关系&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red;"&gt;2.建上级表，A，B用同一套id标识&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;反模式:&lt;strong&gt;表太大&lt;/strong&gt;，怎么办？克隆表结构，然后按年存到不同表&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red;"&gt;解决方案：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red;"&gt;1.水平分割：表分区&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red;"&gt;2.垂直分割：把大数据列放到另外一个表，主键值和原表相同&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red;"&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;反模式:如何限定列的取值范围？用check约束&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red;"&gt;解决方案：&lt;/span&gt;&lt;span style="color: red;"&gt;建lookup表&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;CREATE&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;TABLE&lt;/span&gt;&amp;nbsp;BugStatus&amp;nbsp;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;status&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;VARCHAR&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;20&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;PRIMARY&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;KEY&lt;/span&gt;&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;INSERT&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;INTO&lt;/span&gt;&amp;nbsp;BugStatus&amp;nbsp;(status)&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;VALUES&lt;/span&gt;&amp;nbsp;(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;NEW&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;),&amp;nbsp;(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;IN&amp;nbsp;PROGRESS&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;),&amp;nbsp;(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;FIXED&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;CREATE&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;TABLE&lt;/span&gt;&amp;nbsp;Bugs&amp;nbsp;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 128);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;other&amp;nbsp;columns&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;status&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;VARCHAR&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;20&lt;/span&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;FOREIGN&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;KEY&lt;/span&gt;&amp;nbsp;(status)&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;REFERENCES&lt;/span&gt;&amp;nbsp;BugStatus(status)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ON&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;UPDATE&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;CASCADE&lt;/span&gt;&lt;br /&gt;);&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;反模式:使用一个复杂查询去&lt;strong&gt;解决&lt;/strong&gt;要求&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red;"&gt;解决方案：分步解决&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;        &lt;img src="http://www.cnblogs.com/feiyun0112/aggbug/2440671.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/feiyun0112/archive/2012/04/11/2440671.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/feiyun0112/archive/2010/09/03/1816940.html</id><title type="text">Vs2010下asp.net menu控件分隔图片显示问题</title><summary type="text">今天用Menu控件设计一个横向菜单，在设置分隔符图片时，发现显示不正常，图片跑到文字的下方。更奇怪的是，在另一个旧的项目里设计就是好的！没办法，仔细比较，最后终于发现，在旧项目的Web.config中有一句[代码]MSDN的解释是"指定将与任何呈现的 HTML 兼容的 ASP.NET 版本。"。这才想起来，旧项目是从2008升级过来的，Visual Studio 自动将 Web.con...</summary><published>2010-09-03T05:29:00Z</published><updated>2010-09-03T05:29:00Z</updated><author><name>feiyun0112</name><uri>http://www.cnblogs.com/feiyun0112/</uri></author><link rel="alternate" href="http://www.cnblogs.com/feiyun0112/archive/2010/09/03/1816940.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/feiyun0112/archive/2010/09/03/1816940.html"/><content type="html">&lt;p&gt;今天用Menu控件设计一个横向菜单，在设置分隔符图片时，发现显示不正常，图片跑到文字的下方。&lt;/p&gt;&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/feiyun0112/20100903_1.jpg" width="173" height="84" /&gt;&lt;/p&gt;&lt;p&gt;更奇怪的是，在另一个旧的项目里设计就是好的！&lt;/p&gt;&lt;p&gt;没办法，仔细比较，最后终于发现，在旧项目的Web.config中有一句&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&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;pages&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;controlRenderingCompatibilityVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="3.5"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;&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;pages&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;MSDN的解释是"指定将与任何呈现的 HTML 兼容的 ASP.NET 版本。"。这才想起来，旧项目是从2008升级过来的，Visual Studio 自动将 Web.config 文件中的 controlRenderingCompatibilityVersion 特性设置为 3.5。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;如果以后大家也碰到控件显示的问题，试试这个方法吧。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/feiyun0112/aggbug/1816940.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/feiyun0112/archive/2010/09/03/1816940.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/feiyun0112/archive/2010/08/19/1803402.html</id><title type="text">如何在类序列化时不序列化事件</title><summary type="text">如何在类序列化时不序列化事件</summary><published>2010-08-19T04:56:00Z</published><updated>2010-08-19T04:56:00Z</updated><author><name>feiyun0112</name><uri>http://www.cnblogs.com/feiyun0112/</uri></author><link rel="alternate" href="http://www.cnblogs.com/feiyun0112/archive/2010/08/19/1803402.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/feiyun0112/archive/2010/08/19/1803402.html"/><content type="html">&lt;p&gt;今天有网友问我，想要序列化一个带事件的类实例，但是事件不能序列化。&lt;/p&gt;&lt;p&gt;其实可以用&lt;span id="nsrTitle"&gt;NonSerializedAttribute &lt;/span&gt;指示可序列化类的某个&lt;span style="color: red"&gt;字段&lt;/span&gt;不应被序列化（&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.nonserializedattribute(VS.90).aspx"&gt;http://msdn.microsoft.com/zh-cn/library/system.nonserializedattribute(VS.90).aspx&lt;/a&gt;）。&lt;/p&gt;&lt;p&gt;但是事件不是字段，因此需要多一步，将它设置为字段。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&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: #000000"&gt;[field:NonSerializedAttribute()]&amp;nbsp;&lt;br /&gt;&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;event&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ChangedEventHandler&amp;nbsp;Changed;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/feiyun0112/aggbug/1803402.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/feiyun0112/archive/2010/08/19/1803402.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/feiyun0112/archive/2010/08/19/1803376.html</id><title type="text">Vs2010设计ASP.NET页面时出现&amp;quot;创建控件时出错&amp;quot;</title><summary type="text">创建控件时出错 响应在此上下文中不可用创建控件时出错 未将对象引用设置到对象的实例</summary><published>2010-08-19T04:04:00Z</published><updated>2010-08-19T04:04:00Z</updated><author><name>feiyun0112</name><uri>http://www.cnblogs.com/feiyun0112/</uri></author><link rel="alternate" href="http://www.cnblogs.com/feiyun0112/archive/2010/08/19/1803376.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/feiyun0112/archive/2010/08/19/1803376.html"/><content type="html">&lt;p&gt;今天打开设计页面时，发现所有控件都无法显示，也不能再往上面拖放控件， 提示错误 &lt;span style="color: red"&gt;&amp;#8220;创建控件时出错 响应在此上下文中不可用&amp;#8221;&lt;/span&gt; 和 &lt;span style="color: red"&gt;&amp;#8220;创建控件时出错 &lt;/span&gt;&lt;span style="color: red"&gt;未将对象引用设置到对象的实例&lt;/span&gt;&lt;span style="color: red"&gt;&amp;#8221;。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;有了上回的经验，新建了一个工程，只加载一个错误页面看，最后发现是由OnInit事件里的一句代码引起的：&amp;#8220;System.Web.HttpContext.Current.Response.Redirect("~/xxx.aspx");&amp;#8221;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;联想到错误提示中的&amp;#8220;对象的实例&amp;#8221;，难道是因为System.Web.HttpContext.Current==null? 修改代码，加上判断，问题真的解决了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&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;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(System.Web.HttpContext.Current&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;System.Web.HttpContext.Current.Response.Redirect(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;~/xxx.aspx&lt;/span&gt;&lt;span style="color: #800000"&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;&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;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;为什么设计时会访问OnInit事件的代码？更奇怪的是，这个项目前几天打开都是好的，代码也没变动过。有知道的大侠请不吝赐教！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/feiyun0112/aggbug/1803376.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/feiyun0112/archive/2010/08/19/1803376.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/feiyun0112/archive/2010/08/12/1798201.html</id><title type="text">只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时，才能使用会话状态。还请确保在应用程序配置的 &amp;lt;configuration&amp;gt;\&amp;lt;system.web&amp;gt;\&amp;lt;httpModules&amp;gt; 节中包括..</title><summary type="text">只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时，才能使用会话状态。还请确保在应用程序配置的 \\ 节中包括 System.Web.SessionStateMod 或自定义会话状态模块。</summary><published>2010-08-12T07:40:00Z</published><updated>2010-08-12T07:40:00Z</updated><author><name>feiyun0112</name><uri>http://www.cnblogs.com/feiyun0112/</uri></author><link rel="alternate" href="http://www.cnblogs.com/feiyun0112/archive/2010/08/12/1798201.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/feiyun0112/archive/2010/08/12/1798201.html"/><content type="html">&lt;p&gt;最近在用VS2010做一个Web项目，运行没问题，但是打开Web设计界面时，控件不能正常显示，提示错误:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时，才能使用会话状态。还请确保在应用程序配置的 &amp;lt;configuration&amp;gt;\&amp;lt;system.web&amp;gt;\&amp;lt;httpModules&amp;gt; 节中包括 System.Web.SessionStateMod 或自定义会话状态模块。&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;按照提示操作，到网上搜索，都不能解决。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;没办法，最后新建一个工程，将文件一个个增加，终于发现问题：原来是主工程使用了原来用VS2005编写的一个类库引起的。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;解决方法：用VS2010建一个类库工程，引用VS2005编写的类库，再提供需要的函数接口给主工程调用，问题解决！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/feiyun0112/aggbug/1798201.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/feiyun0112/archive/2010/08/12/1798201.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/feiyun0112/archive/2009/07/03/1516512.html</id><title type="text">动态调用DLL时不能加载依赖的程序集</title><summary type="text">假设有2个DLL, Class1和Class2. Class1引用Class2， 并调用Class2里的方法。[代码]如果我们动态调用Class1里的方法，会报无法加载"Class2"的异常[代码]解决的方法其实也很简单，在对程序集的解析失败时, 会触发AppDomain.AssemblyResolve事件, 我么只需要在事件中进行处理，将需要的Dll加载到应用程序域，动态调用的程序集就可以正常使...</summary><published>2009-07-03T09:37:00Z</published><updated>2009-07-03T09:37:00Z</updated><author><name>feiyun0112</name><uri>http://www.cnblogs.com/feiyun0112/</uri></author><link rel="alternate" href="http://www.cnblogs.com/feiyun0112/archive/2009/07/03/1516512.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/feiyun0112/archive/2009/07/03/1516512.html"/><content type="text">假设有2个DLL, Class1和Class2. Class1引用Class2， 并调用Class2里的方法。[代码]如果我们动态调用Class1里的方法，会报无法加载"Class2"的异常[代码]解决的方法其实也很简单，在对程序集的解析失败时, 会触发AppDomain.AssemblyResolve事件, 我么只需要在事件中进行处理，将需要的Dll加载到应用程序域，动态调用的程序集就可以正常使...</content></entry><entry><id>http://www.cnblogs.com/feiyun0112/archive/2009/06/04/1496372.html</id><title type="text">创建 win32资源 错误</title><summary type="text">今天发生了一件奇怪的事新建了一个工程，直接编译出错"创建 win32资源 错误: Error reading icon 'C:\Documents and Settings\username\Application Data\Microsoft\VisualStudio\8.0\VSProjectApplication.ico'"到google搜了一下有不少人提问， 但没有人解决。无意中在项目里建...</summary><published>2009-06-04T09:15:00Z</published><updated>2009-06-04T09:15:00Z</updated><author><name>feiyun0112</name><uri>http://www.cnblogs.com/feiyun0112/</uri></author><link rel="alternate" href="http://www.cnblogs.com/feiyun0112/archive/2009/06/04/1496372.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/feiyun0112/archive/2009/06/04/1496372.html"/><content type="text">今天发生了一件奇怪的事新建了一个工程，直接编译出错"创建 win32资源 错误: Error reading icon 'C:\Documents and Settings\username\Application Data\Microsoft\VisualStudio\8.0\VSProjectApplication.ico'"到google搜了一下有不少人提问， 但没有人解决。无意中在项目里建...</content></entry><entry><id>http://www.cnblogs.com/feiyun0112/archive/2009/02/09/1386802.html</id><title type="text">如何在DragDrop特殊文件夹时得到相关信息</title><summary type="text">拖放时得到信息,表示我拖放的是.</summary><published>2009-02-09T06:26:00Z</published><updated>2009-02-09T06:26:00Z</updated><author><name>feiyun0112</name><uri>http://www.cnblogs.com/feiyun0112/</uri></author><link rel="alternate" href="http://www.cnblogs.com/feiyun0112/archive/2009/02/09/1386802.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/feiyun0112/archive/2009/02/09/1386802.html"/><content type="text">拖放时得到信息,表示我拖放的是.</content></entry><entry><id>http://www.cnblogs.com/feiyun0112/archive/2009/01/14/1375767.html</id><title type="text">如何用HttpWebRequest下载gzip, deflate压缩的页面</title><summary type="text">HttpWebRequest下载gzip, deflate的页面，显示乱码，原因是没有解压缩流</summary><published>2009-01-14T08:56:00Z</published><updated>2009-01-14T08:56:00Z</updated><author><name>feiyun0112</name><uri>http://www.cnblogs.com/feiyun0112/</uri></author><link rel="alternate" href="http://www.cnblogs.com/feiyun0112/archive/2009/01/14/1375767.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/feiyun0112/archive/2009/01/14/1375767.html"/><content type="text">HttpWebRequest下载gzip, deflate的页面，显示乱码，原因是没有解压缩流</content></entry><entry><id>http://www.cnblogs.com/feiyun0112/archive/2008/11/13/1332968.html</id><title type="text">如何在VB6中使用.NET开发的UserControl</title><summary type="text">在网上搜索关于如何用C#开发Activex控件的文章，基本上好像都是引用的博客园里的一篇。但是那一篇是在IE里使用。但是我试过，如果在VB6中无法引用，提示不能注册为Activex控件。后来发现Microsoft已经提供了一个工具包“Microsoft Interop Forms Toolkit 2.0”可以很方便地实现这个功能。安装完成后，新建VB.NET项目时可以看到在...</summary><published>2008-11-13T09:15:00Z</published><updated>2008-11-13T09:15:00Z</updated><author><name>feiyun0112</name><uri>http://www.cnblogs.com/feiyun0112/</uri></author><link rel="alternate" href="http://www.cnblogs.com/feiyun0112/archive/2008/11/13/1332968.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/feiyun0112/archive/2008/11/13/1332968.html"/><content type="text">在网上搜索关于如何用C#开发Activex控件的文章，基本上好像都是引用的博客园里的一篇。但是那一篇是在IE里使用。但是我试过，如果在VB6中无法引用，提示不能注册为Activex控件。后来发现Microsoft已经提供了一个工具包“Microsoft Interop Forms Toolkit 2.0”可以很方便地实现这个功能。安装完成后，新建VB.NET项目时可以看到在...</content></entry></feed>
