<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Lae's Blog</title><subtitle type="text">CODE LIFE   －－像蚂蚁一样工作，像蝴蝶一样生活</subtitle><id>http://feed.cnblogs.com/blog/u/13659/rss</id><updated>2010-12-13T14:01:20Z</updated><author><name>lae</name><uri>http://www.cnblogs.com/lae/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lae/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/13659/rss"/><entry><id>http://www.cnblogs.com/lae/archive/2010/12/04/1896048.html</id><title type="text">[转]程序员应知： 海量数据如何分析</title><summary type="text">这个云计算热炒的时代，如果你没有处理过海量数据的话，你将不再是个合格的Coder。现在赶紧补补吧~　　前一阵子分析了一个将近1TB的数据群(gz文件，压缩10%)。因为第一次分析如此巨大的数据，没有经验，所以浪费了许多时间。下面是我整理的一些经验，方便后者。　　下载数据　　Q：怎么自动下载多个文件?　　这是我遇到的第一个问题。当数据量很大时，一般都会分成很多个文件存放。这时下载文件比较麻烦。　　A...</summary><published>2010-12-04T01:29:00Z</published><updated>2010-12-04T01:29:00Z</updated><author><name>lae</name><uri>http://www.cnblogs.com/lae/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lae/archive/2010/12/04/1896048.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lae/archive/2010/12/04/1896048.html"/><content type="html">&lt;span  style="color: #333333; font-family: 瀹嬩綋; line-height: 23px; "&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;这个云计算热炒的时代，如果你没有处理过海量数据的话，你将不再是个合格的Coder。现在赶紧补补吧~&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;前一阵子分析了一个将近1TB的数据群(gz文件，压缩10%)。因为第一次分析如此巨大的数据，没有经验，所以浪费了许多时间。下面是我整理的一些经验，方便后者。&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;&lt;strong&gt;下载数据&lt;/strong&gt;&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;&lt;strong&gt;　　Q：怎么自动下载多个文件?&lt;/strong&gt;&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;这是我遇到的第一个问题。当数据量很大时，一般都会分成很多个文件存放。这时下载文件比较麻烦。&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;A：用Wget命令。Windows下花费一点时间去下载安装。但之于手动下载，能省不少时间。&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;我提供两种方式方式下载文件，&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;a)用Wget的递归下载选项 &amp;#8220;-r&amp;#8221;。一般命令如下&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;wget &amp;#8211;r http://&amp;lt;下载数据的根目录&amp;gt;/ -o &amp;lt;下载记录文件名&amp;gt; -np&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;因为递归下载没法控制进度，所以建议不一要次递归下载太多的文件&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;b)用Bat+Wget，多次执行Wget。一般命令如下&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;wget &amp;#8211;r http://&amp;lt;下载数据的根目录分支1&amp;gt;/ -o &amp;lt;下载记录文件名&amp;gt; -np&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;wget &amp;#8211;r http://&amp;lt;下载数据的根目录分支2&amp;gt;/ -o &amp;lt;下载记录文件名&amp;gt; -np&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;wget &amp;#8211;r http://&amp;lt;下载数据的根目录分支3&amp;gt;/ -o &amp;lt;下载记录文件名&amp;gt; -np&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;&amp;#8230;&amp;#8230; &amp;#8230;&amp;#8230;&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;wget &amp;#8211;r http://&amp;lt;下载数据的根目录分支N&amp;gt;/ -o &amp;lt;下载记录文件名&amp;gt; -np&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;用Bat可以降低出错带来的影响。&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;另外，Wget可以通过 &amp;#8211;A 选项来指定希望下载的文件的后辍，通过 &amp;#8211;P 选项来指定下载文件存放路径。更多命令，参见wget -h&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;&lt;strong&gt;　　Q：这速度。。。什么时候才能下完?&lt;/strong&gt;&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;网速永远是个瓶颈&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;A：如果下载服务很远的话，你应该考虑代理。wget设置代理的方式如下&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;set http_proxy=http://&amp;lt;代理&lt;a href="http://product.it168.com/list/b/0402_1.shtml" target="_blank"  title="服务器" style="text-decoration: none; color: #000000; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: #666666; padding-bottom: 1px; "&gt;服务器&lt;/a&gt;&amp;gt;&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;不要忘了多开几个进程，20个试试?&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;&lt;strong&gt;　　打开文件&lt;/strong&gt;&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;&lt;strong&gt;　　Q：怎么打开文本文件&lt;/strong&gt;&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;这不是弱智问题。你用记事本打开一个100MB的文件试试&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;A：LTF viewer&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;Large Text File viewer, 打开速度会让你惊奇&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;&lt;strong&gt;　　Q：怎么打开二进制文件&lt;/strong&gt;&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;A：Hex Editor Neo&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;你可以通过下面方式来选择进制：&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;右击数据区 =&amp;gt; Display As =&amp;gt; Hex|Decimal|Octal|Binary|Float|Double&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;你可以通过下面方式来选择按多少字节显示：&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;右击数据区 =&amp;gt; Group By =&amp;gt; Bytes|Words|Double|Quad&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;&lt;strong&gt;　　编程语言&lt;/strong&gt;&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;当数据量很大时，选择语言要慎重了。因为不同语言有不同的特点，你要在编程时间和运行时间之间权衡。&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;&lt;strong&gt;　　模型测试&lt;/strong&gt;&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;开始时，一般挑几个小的数据进行测试，获取第一份分析结果。这时当然希望能快速编程实现。脚本语言是一个很好的选择，比如Python。&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;&lt;strong&gt;　　大量处理&lt;/strong&gt;&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;开始遍历处理所有数据时，用脚本语言来处理就不太合适了。因为脚本语言的运行时间不能让人接受。另外，还有&lt;a href="http://product.it168.com/list/b/0205_1.shtml" target="_blank"  title="内存" style="text-decoration: none; color: #000000; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: #666666; padding-bottom: 1px; "&gt;内存&lt;/a&gt;使用，文件读写这些你都没法控制。不幸的是，很少语言会为你处理海量文件做优化。&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;这时，C/C++是最好的选择。&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;&lt;strong&gt;　　结果展示&lt;/strong&gt;&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;漫长的等待终于过去了，眼看就要出结果了。如果你还执着于陪伴你度过漫长等待的C/C++的话，你迟早会沮丧的。&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;我尝试了很多方式之后，得出的结论是，让Matlab来接手C/C++。Matlab能轻而易举地展示大量数据。更重要的是Matlab支持读取二进制文件。&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;filename = 'out.bin'; % binary file&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;fid = fopen( filename );&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;data = fread( fid, itemsNumber, '*uint32');&lt;/p&gt;&lt;p style="height: auto; text-align: left; font-size: 14px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 13px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; color: #000000; line-height: 23px; "&gt;fclose(fid);　&lt;/p&gt;&lt;p&gt;------------------------------&lt;/p&gt;&lt;p&gt;原文链接：&lt;a href="http://publish.itpub.net/a2010/1203/1133/000001133931.shtml"&gt;http://publish.itpub.net/a2010/1203/1133/000001133931.shtml&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;img src="http://www.cnblogs.com/lae/aggbug/1896048.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lae/archive/2010/12/04/1896048.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lae/archive/2010/12/02/1894350.html</id><title type="text">[转]Web开发者必备的12款超赞jQuery插件</title><summary type="text">jQuery插件能够增强网站的可用性，有效地改善用户体验，还可以大大减少创建一个新站点的开发时间。现在的jQuery插件很多，尽可以根据您 的项目要求来选择，不过也有一些插件很好用，几乎各种项目都能够用得上。这里就为您介绍12款开发中最常用的jQuery插件。　　1. jQuery BBCode Editor　　下载地址：http://www.w3theme.com/jquery-bbedit/　...</summary><published>2010-12-02T05:24:00Z</published><updated>2010-12-02T05:24:00Z</updated><author><name>lae</name><uri>http://www.cnblogs.com/lae/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lae/archive/2010/12/02/1894350.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lae/archive/2010/12/02/1894350.html"/><content type="html">jQuery插件能够增强网站的可用性，有效地改善用户体验，还可以大大减少创建一个新站点的开发时间。现在的jQuery插件很多，尽可以根据您 的项目要求来选择，不过也有一些插件很好用，几乎各种项目都能够用得上。这里就为您介绍12款开发中最常用的jQuery插件。&lt;p&gt;&lt;strong&gt;　　1. jQuery BBCode Editor&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下载地址：http://www.w3theme.com/jquery-bbedit/&lt;/p&gt;&lt;p&gt;Bbcode简单易用，它是BBS、论坛、Blog等网络应用上的一种常用输入语法。jQuery BbCode Editor提供自定义设置，可以打造出很个性化的bbcode编辑器，它的源代码都可以根据需求灵活修改。&lt;/p&gt;&lt;p&gt;&lt;img alt="1" href="http://tech.it168.com/picshow/index365127.shtml" src="http://image20.it168.com/201012_500x375/366/b73ade01c1b30f7c.jpg" border="1" /&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;　　2. Exposure&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下载地址：http://plugins.jquery.com/project/Exposure/&lt;/p&gt;&lt;p&gt;Exposure是一个图片预览插件，用于创建丰富，自定义的视觉体验，可以处理海量图片。&lt;/p&gt;&lt;p&gt;&lt;img alt="1" href="http://tech.it168.com/picshow/index365134.shtml" src="http://image20.it168.com/201012_0x0/366/b2b9dbbe39626824.jpg" border="1" /&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;　3. jQuery YouTube Plugin&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下载地址：http://www.tikku.com/jquery-youtube-tubeplayer-plugin&lt;/p&gt;&lt;p&gt;这个插件基本上是个标准的YouTube播放器API了。开发者省略了一些功能，但足够用了。&lt;/p&gt;&lt;p&gt;&lt;img alt="1" href="http://tech.it168.com/picshow/index365135.shtml" src="http://image20.it168.com/201012_0x0/366/3808acf2c15a188c.jpg" border="1" /&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;　　4. PoshyTip Tooltips&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下载地址：http://vadikom.com/tools/poshy-tip-jquery-plugin-for-stylish-tooltips/&lt;/p&gt;&lt;p&gt;用它可以很方便地创建工具提示框，很有型哦，而且该有的功能都有了。&lt;/p&gt;&lt;p&gt;&lt;img alt="1" href="http://tech.it168.com/picshow/index365136.shtml" src="http://image20.it168.com/201012_0x0/366/d14e0f60a470a9b0.jpg" border="1" /&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;　　5. InputNotes jQuery Plugin&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下载地址：http://fredibach.ch/jquery-plugins/inputnotes.php#demo&lt;/p&gt;&lt;p&gt;一个用于在文本域下方添加注释的jQuery插件，基于正则表达式。&lt;/p&gt;&lt;p&gt;&lt;img alt="1" href="http://tech.it168.com/picshow/index365137.shtml" src="http://image20.it168.com/201012_0x0/366/3c1a4412314403c.jpg" border="1" /&gt;&lt;br /&gt;　&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;　　6. Infinite Scroll&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下载地址：http://www.infinite-scroll.com/&lt;/p&gt;&lt;p&gt;用了这个插件，用户访问你的网站就不用翻页啦!实际上它是预读了后续页的内容并将其直接添加到了当前页面。&lt;/p&gt;&lt;p&gt;&lt;img alt="1" href="http://tech.it168.com/picshow/index365138.shtml" src="http://image20.it168.com/201012_0x0/366/ccf4ba2cea8b248.jpg" border="1" /&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;　　7. jQuery xColor Plugin&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下载地址：http://www.xarg.org/project/jquery-color-plugin-xcolor/&lt;/p&gt;&lt;p&gt;一个简单易用的混色器。&lt;/p&gt;&lt;p&gt;&lt;img alt="1" href="http://tech.it168.com/picshow/index365139.shtml" src="http://image20.it168.com/201012_0x0/366/f9324ab0883f4b50.jpg" border="1" /&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;　8. Bit.ly jQuery&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下载地址：http://www.moretechtips.net/2010/07/bitly-button-jquery-plugin-for-your.html&lt;/p&gt;&lt;p&gt;这个插件可以创建能够动态显示点击次数的按钮(方形的或者长方形的)，还可以实现文章转推功能。&lt;/p&gt;&lt;p&gt;&lt;img alt="1" href="http://tech.it168.com/picshow/index365140.shtml" src="http://image20.it168.com/201012_0x0/366/d1558d2f8151dcb0.jpg" border="1" /&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;　9. Inset Border Effect&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下载地址：http://css-tricks.com/inset-border-effect/&lt;/p&gt;&lt;p&gt;这是一个非常简单但整洁的效果。它能够给图像加上一个边框，这个边框涵盖了图像的一部分，与CSS做出来的边框是不同的。&lt;/p&gt;&lt;p&gt;&lt;img alt="1" href="http://tech.it168.com/picshow/index365141.shtml" src="http://image20.it168.com/201012_0x0/366/b344cb94f1474e10.jpg" border="1" /&gt;&lt;br /&gt;　　&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;　　10. Apple Zoom&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下载地址：http://tutorialzine.com/2010/06/apple-like-retina-effect-jquery-css/&lt;/p&gt;&lt;p&gt;不多解释了&lt;/p&gt;&lt;p&gt;&lt;img alt="1" href="http://tech.it168.com/picshow/index365142.shtml" src="http://image20.it168.com/201012_0x0/366/917363be06bd43b0.jpg" border="1" /&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;　11. jTweetsAnywhere&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下载地址：http://thomasbillenstein.com/jTweetsAnywhere/&lt;/p&gt;&lt;p&gt;jTweetsAnywhere是一个jQuery 的Twitter小工具，它可以很方便地在网站里添加Twitter功能。&lt;/p&gt;&lt;p&gt;&lt;img alt="1" href="http://tech.it168.com/picshow/index365143.shtml" src="http://image20.it168.com/201012_0x0/366/5b32728bcbd118e4.jpg" border="1" /&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;12. Form Validation with Hints&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下载地址：http://www.icograma.com/nuestro-trabajo/open-source/jquery-form- validation-and-hints/jquery-form-validation-and-hints-client-side-form-validation.html&lt;/p&gt;&lt;p&gt;这个jQuery插件使表单验证开发工作更简单了，预置了常见的验证规则，方便开发者自行设置。&lt;/p&gt;&lt;img alt="1" href="http://tech.it168.com/picshow/index365144.shtml" src="http://image20.it168.com/201012_0x0/366/849ea6cf4203a298.jpg" border="1" /&gt;&lt;img src="http://www.cnblogs.com/lae/aggbug/1894350.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lae/archive/2010/12/02/1894350.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lae/archive/2010/11/17/1879875.html</id><title type="text">NOSql数据库特性对比</title><summary type="text"/><published>2010-11-17T07:14:00Z</published><updated>2010-11-17T07:14:00Z</updated><author><name>lae</name><uri>http://www.cnblogs.com/lae/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lae/archive/2010/11/17/1879875.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lae/archive/2010/11/17/1879875.html"/><content type="html">&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lae/nosql.png" width="958" height="604" /&gt;&lt;img src="http://www.cnblogs.com/lae/aggbug/1879875.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lae/archive/2010/11/17/1879875.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lae/archive/2010/11/12/1875612.html</id><title type="text">NHibernate3新特性初尝</title><summary type="text">配置文件如下　　代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--&amp;gt;&amp;lt;?xmlversion="1.0"?&amp;gt;&amp;lt;configuration&amp;gt;&amp;lt;configSections&amp;gt;&amp;lt;sectionname="hibern...</summary><published>2010-11-12T05:27:00Z</published><updated>2010-11-12T05:27:00Z</updated><author><name>lae</name><uri>http://www.cnblogs.com/lae/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lae/archive/2010/11/12/1875612.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lae/archive/2010/11/12/1875612.html"/><content type="html">&lt;p&gt;配置文件如下　　&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('81d8efd9-8438-4e91-af05-110a9c2e914f')"&gt;&lt;img src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"  id="code_img_opened_7cfe3740-9f57-4131-92db-78f8992cae28" onclick="cnblogs_code_hide('7cfe3740-9f57-4131-92db-78f8992cae28',event)" style="display: none;"&gt;&lt;div id="cnblogs_code_open_7cfe3740-9f57-4131-92db-78f8992cae28" &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;&amp;nbsp;&amp;nbsp;var&amp;nbsp;nhConfig&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;Configuration().Configure();&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;nhConfig.AddDeserializedMapping(GetMapping(),&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;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;&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;/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;nhConfig.SetProperty(NHibernate.Cfg.Environment.UseSecondLevelCache,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;true&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;.SetProperty(NHibernate.Cfg.Environment.UseQueryCache,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;true&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;.Cache(c&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;c.Provider&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;SysCacheProvider&lt;/span&gt;&lt;span style="color: #000000;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.EntityCache&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Domain&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;(c&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&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;&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;c.Strategy&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;EntityCacheUsage.ReadWrite;&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;c.RegionName&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;hourly&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;});&lt;br /&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;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&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;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;SchemaMetadataUpdater.QuoteTableAndColumns(nhConfig);&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;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&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;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;new&amp;nbsp;SchemaExport(nhConfig).Create(false,&amp;nbsp;true);&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&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;var&amp;nbsp;factory&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;nhConfig.BuildSessionFactory();&lt;br /&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;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(var&amp;nbsp;s&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;factory.OpenSession())&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;{&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;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(var&amp;nbsp;tx&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;s.BeginTransaction())&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;{&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;var&amp;nbsp;domain&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;Domain&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;Name&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;我的测试&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;DateTime.Now.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;&amp;nbsp;Address&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;中国&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Picture&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;GetPic()&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;&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;s.Save(domain);&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;tx.Commit();&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;}&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;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;尽管配置了缓存，性能问题依然出现在picture保存上面，竟然需要20多秒，期待有人能研究出这个解决办法。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;-------------------------------------------------------------&lt;/p&gt;&lt;p&gt;&lt;span style="color: red;"&gt;&amp;nbsp;构造领域模型时需要使用如下代码，等同于在*.hbm.xml文件将实体列映射的类型显式声明&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red;"&gt;&amp;nbsp;var mapper = new Mapper(orm);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mapper.Class&amp;lt;Domain&amp;gt;(dm =&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&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;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dm.Property(x =&amp;gt; x.Picture,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m =&amp;gt; m.Type(NHibernate.NHibernateUtil.BinaryBlob));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&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;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lae/aggbug/1875612.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lae/archive/2010/11/12/1875612.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lae/archive/2010/07/13/1776716.html</id><title type="text">微软回答“关于数据的10个问题”</title><summary type="text">微软回答了他们称之为&amp;#8220;关于数据的10个问题&amp;#8221;，解释了Oslo、ADO.NET Data Services、WCF、LINQ to SQL、T-SQL以及其它技术的发展情况和未来的计划。 Oslo 微软宣称&amp;#8220;会继续开发这些技术&amp;#8221;，但不会继续使用&amp;#8220;Oslo&amp;#8221;这个代号，而是改名为SQL Server Modeling CTP。由于与...</summary><published>2010-07-13T11:26:00Z</published><updated>2010-07-13T11:26:00Z</updated><author><name>lae</name><uri>http://www.cnblogs.com/lae/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lae/archive/2010/07/13/1776716.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lae/archive/2010/07/13/1776716.html"/><content type="html">&lt;p&gt;微软回答了他们称之为&amp;#8220;&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/data/bb525059.aspx"&gt;关于数据的10个问题&lt;/a&gt;&amp;#8221;，解释了Oslo、ADO.NET Data Services、WCF、LINQ to SQL、T-SQL以及其它技术的发展情况和未来的计划。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Oslo&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;微软宣称&amp;#8220;会继续开发这些技术&amp;#8221;，但不会继续使用&amp;#8220;Oslo&amp;#8221;这个代号，而是改名为&lt;strong&gt;SQL Server Modeling CTP&lt;/strong&gt;。由于与SQL相关技术的紧密联系，特别是Quadrant（译注：用来查看和修改数据库中数据的工具）和Repository（现在叫做SQL Server Modeling Services），这些技术将来会被集成到SQL Server中。&lt;/p&gt; &lt;p&gt;微软还解释了SQL Server Modeling和.NET之间的联系：它使得创建模型驱动的应用程序更加容易。&lt;/p&gt; &lt;p&gt;ADO.NET Data Services和.NET RIA Services ADO.NET Data Services变成了WCF  Data Services，而.NET RIA Services则变成了WCF RIA  Services，目的是使WCF成为创建服务和多层应用的一站式框架，ADO.NET Data Services和.NET RIA  Services在此方面完善了WCF。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;LINQ to SQL&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;LINQ to SQL在.NET 4.0中将会继续得到增强：&lt;/p&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; 没错，我们会继续开发LINQ to SQL。但是我们会更偏重于Entity  Framework，因为此框架是围绕Entity Data Model（EDM)构件的。而EDM代表了微软很多产品的主要战略方向，包括SQL  Server、.NET和Visual Studio。 &lt;/blockquote&gt; &lt;p&gt;这条消息明确表明：LINQ to SQL将不会被包含在更长远的计划中。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&amp;#8220;M&amp;#8221;语言&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;微软对于这个语言的定位很模糊。首先，他们说M将会和Oslo一样，被集成到SQL Server中：&lt;/p&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; 很重要的一点是，SQL Server并不仅仅是一个核心引擎，而是范围更广泛的产品，它包括很多其它的服务和工具。&amp;#8220;M&amp;#8221;语言及相关的工具将会成为它的一部分，并为其它使用SQL Server的产品所使用。 &lt;/blockquote&gt; &lt;p&gt;然后，他们又说：&lt;/p&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;微软正在整合&amp;#8220;M&amp;#8221;语言和Entity Data Model，以便Entity Framework和Data  Services可以使用。这将导致同一种数据模型拥有两种不同的表现方式：CSDL，目前Entity Data  Model所使用的基于XML的语言，更适合互操作；或者&amp;#8220;M&amp;#8221;语言，更适合开发人员。&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;目前仍不清楚M语言将会走向何方。可能将会被包含在SQL Server中，但以后将会整合到Entity Data Model中。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&amp;#8220;M&amp;#8221; vs. T-SQL&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;由于M语言还没有发布，微软建议目前还是继续使用T-SQL，但以后则会不同：&lt;/p&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;一旦&amp;#8220;M&amp;#8221;语言发布，就可以使用&amp;#8220;M&amp;#8221;语言在更高的抽象层次描述问题域。然后可以将&amp;#8220;M&amp;#8221;语言转换为成T-SQL、C#或者其他格式，以便在本地运行环境中做进一步的优化。&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;WCF Data Services&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;微软强调了.NET 4.0和VS 2010中包含的WCF Data Services新特性：&lt;/p&gt; &lt;ul&gt;&lt;li&gt;双向数据绑定&lt;/li&gt;&lt;li&gt;计算数据的总行数&lt;/li&gt;&lt;li&gt;Feed定制化&lt;/li&gt;&lt;li&gt;服务器端分页&lt;/li&gt;&lt;li&gt;增强的BLOB支持&lt;/li&gt;&lt;li&gt;为Custom Provider Writers 提供的新的&amp;#8220;Data Service Provider&amp;#8221;接口&lt;/li&gt;&lt;li&gt;Projections&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;ADO.NET Entity Framework&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;ADO.NET Entity Framework最重要的特性是：&lt;/p&gt; &lt;ul&gt;&lt;li&gt;外键&lt;/li&gt;&lt;li&gt;支持POCO&lt;/li&gt;&lt;li&gt;新模型默认使用延迟加载&lt;/li&gt;&lt;li&gt;为Query Extender和POCO提供的EntityDataSource&lt;/li&gt;&lt;li&gt;支持二进制类型的主键和外键&lt;/li&gt;&lt;li&gt;ObjectMaterialized事件&lt;/li&gt;&lt;li&gt;改进的Object Service API，支持N层架构和Self Tracking Entities&lt;/li&gt;&lt;li&gt;改进的SQL生成机制&lt;/li&gt;&lt;li&gt;Navigation Property管理&lt;/li&gt;&lt;li&gt;改进数据库生成机制&lt;/li&gt;&lt;li&gt;新的扩展API&lt;/li&gt;&lt;li&gt;根据存储过程的返回值生成复杂类型&lt;/li&gt;&lt;li&gt;改进的管理工具&lt;/li&gt;&lt;li&gt;改进的LINQ to Entities&lt;/li&gt;&lt;/ul&gt; 微软还解释了什么是Quadrant－&amp;#8220;用于显示、查询和编辑SQL数据库中数据的工具，具有多种不同的视图，如树形、列表、表格以及master/detail&amp;#8221;，以及什么是Open Data Protocol（OData)，&lt;img src="http://www.cnblogs.com/lae/aggbug/1776716.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lae/archive/2010/07/13/1776716.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lae/archive/2010/04/16/1713951.html</id><title type="text">SubSonic 3.0新特性</title><summary type="text">1. 引言  大多数数据访问程序包提供从&amp;#8220;数据库外&amp;#8221;访问，意思是这种方式将您的数据库的表在应用程序中用对象表示。这种方式可以在大多数案例中工作，但是关系理论与面向对象编程将变的不一致，即&amp;#8220;错误的匹配&amp;#8221;。  许多人喜欢只使用类工作，但不想关心数据库的具体实现。为了释放他们的工作，同时又不开放数据库设计内部实现。SubSonic创建了一个免费基类且单独存...</summary><published>2010-04-16T14:52:00Z</published><updated>2010-04-16T14:52:00Z</updated><author><name>lae</name><uri>http://www.cnblogs.com/lae/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lae/archive/2010/04/16/1713951.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lae/archive/2010/04/16/1713951.html"/><content type="html">&lt;p style="margin-left: 0cm;"&gt;&lt;span&gt;&lt;span&gt;1.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 黑体;"&gt;引言&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体;"&gt;大多数数据访问程序包提供从&amp;#8220;数据库外&amp;#8221;访问，意思是这种方式将您的数据库的表在应用程序中用对象表示。这种方式可以在大多数案例中工作，但是关系理论与面向对象编程将变的不一致，即&amp;#8220;错误的匹配&amp;#8221;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体;"&gt;许多人喜欢只使用类工作，但不想关心数据库的具体实现。为了释放他们的工作，同时又不开放数据库设计内部实现。&lt;/span&gt;SubSonic&lt;span style="font-family: 宋体;"&gt;创建了一个免费基类且单独存在的，作为纯粹的&lt;/span&gt;CLR&lt;span style="font-family: 宋体;"&gt;对象（也称为&lt;/span&gt;POCO&lt;span style="font-family: 宋体;"&gt;）。&lt;/span&gt; &lt;/p&gt;  &lt;p style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体;"&gt;如果你是这些人之一，你不需要特别关心的数据库结构的，那么&lt;/span&gt;SimpleRepository&lt;span style="font-family: 宋体;"&gt;是给你准备的。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin-left: 0cm;"&gt;&lt;span&gt;&lt;span&gt;2.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 黑体;"&gt;使用&lt;/span&gt;SimpleRepository&lt;/p&gt;  &lt;p style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体;"&gt;使用&lt;/span&gt;Rails&lt;span style="font-family: 宋体;"&gt;的有关工作的有趣的事情之一就是你可以建立从代码和专注于您的应用程序的数据库。许多开发者发现这种非常自由（包括我自己在内）。它的一个缺点，就是你需要学习的迁移代码，你需要知道它是如何工作的。这对我们来说，不是一个好的办法，而是一直希望&lt;/span&gt;Rails&lt;span style="font-family: 宋体;"&gt;将&amp;#8220;只知道&amp;#8221;我们要迁移的东西。&lt;/span&gt; &lt;/p&gt;  &lt;p style="text-align: left; text-indent: 21pt;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;这就是为什么我们想使用&lt;/span&gt;SubSonic&lt;span style="font-family: 宋体;"&gt;的自动迁移。这里的目标是&lt;/span&gt;,&lt;span style="font-family: 宋体;"&gt;如果您在构造&lt;/span&gt;SimpleRepository&lt;span style="font-family: 宋体;"&gt;对象时设置一个标志，告诉它迁移模式：自动创建和同步数据库，其关键是在构造函数中设置适当的选项&lt;/span&gt;,&lt;span style="font-family: 宋体;"&gt;如：&lt;/span&gt;&lt;/p&gt;  &lt;pre&gt;&lt;em&gt;&lt;span style="font-size: 10.5pt;"&gt;var repository = new SimpleRepository(SimpleRepositoryOptions.RunMigrations);&lt;/span&gt;&lt;/em&gt;&lt;/pre&gt;  &lt;p style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体;"&gt;设置选项&lt;/span&gt;RunMigrations&lt;span style="font-family: 宋体;"&gt;告诉&lt;/span&gt;SubSonic&lt;span style="font-family: 宋体;"&gt;在更新或保存数据时同步你的模型对象到数据库。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 42pt; text-indent: -21pt;"&gt;&lt;span style="font-family: Wingdings;"&gt;l&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;添加对&lt;/span&gt;SubSonic&lt;span style="font-family: 宋体;"&gt;的引用&lt;/span&gt;,&lt;span style="font-family: 宋体;"&gt;这部分非常简单&lt;/span&gt;,&lt;span style="font-family: 宋体;"&gt;右键单击您的项目，添加引用，浏览以查找&lt;/span&gt;SubSonic&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;3.0&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;DLL(SubSonic.Core.dll)&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 42pt; text-indent: -21pt;"&gt;&lt;span style="font-family: Wingdings;"&gt;l&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;本例子使用的是&lt;/span&gt;SQLite&lt;span style="font-family: 宋体;"&gt;数据库，添加对&lt;/span&gt;&lt;span&gt;System.Data.SQLite&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的引用&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 42pt; text-align: left; text-indent: -21pt;" align="left"&gt;&lt;span style="font-family: Wingdings;"&gt;l&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;设置数据库连接字符串&lt;/span&gt;&lt;/p&gt;  &lt;table style="width: 432.35pt; margin-left: -1.7pt; border-collapse: collapse; border: medium none;" border="1" cellpadding="0" cellspacing="0" width="576"&gt;  &lt;tbody&gt;&lt;tr&gt;   &lt;td style="width: 432.35pt; border: 1pt solid black; padding: 0cm 5.4pt;" valign="top" width="576"&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;&amp;lt;add &lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;name&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;=&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;"Northwind"&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt; connectionString&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;=&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;"server=.\SQLExpress;database=SubSonic;integrated security=true;"&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt; providerName&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;=&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;"System.Data.SqlClient"&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;/&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: #a31515;"&gt;connectionStrings&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: #a31515;"&gt;add&lt;/span&gt; &lt;span style="font-size: 9pt; font-family: 新宋体; color: red;"&gt;name&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;"&gt;=&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt;"&lt;span style="color: blue;"&gt;NorthwindSQLite&lt;/span&gt;"&lt;/span&gt;&lt;/p&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;"&gt;connectionString&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;"&gt;=&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt;"&lt;span style="color: blue;"&gt;Data   Source=D:\Program Files\Sqliteman\test.db&lt;/span&gt;"&lt;/span&gt;&lt;/p&gt;   &lt;pre&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;"&gt;providerName&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;"&gt;=&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt;"&lt;span style="color: blue;"&gt;System.Data.SQLite&lt;/span&gt;"&lt;span style="color: blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;&amp;lt;add &lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;name&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;=&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;"NorthwindMySql"&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt; connectionString&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;=&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;"server=localhost;database=northwind;user id=root; password="&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt; providerName&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;=&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;"MySql.Data.MySqlClient"&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;/&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;   &lt;p align="left"&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="margin-left: 42pt;" align="left"&gt;&lt;/p&gt;  &lt;p style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;span&gt;2.1&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 黑体;"&gt;自动迁移&lt;/span&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;span style="font-family: 宋体;"&gt;例如有以下&lt;/span&gt;post&lt;span style="font-family: 宋体;"&gt;对象：&lt;/span&gt;&lt;/p&gt;  &lt;table style="border-collapse: collapse; border: medium none;" border="1" cellpadding="0" cellspacing="0"&gt;  &lt;tbody&gt;&lt;tr&gt;   &lt;td style="width: 426.1pt; border: 1pt solid black; padding: 0cm 5.4pt;" valign="top" width="568"&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt;   &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Post&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt;   &lt;span style="color: #2b91af;"&gt;Guid&lt;/span&gt; ID { &lt;span style="color: blue;"&gt;get&lt;/span&gt;;   &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/p&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt;   &lt;span style="color: blue;"&gt;string&lt;/span&gt; Title { &lt;span style="color: blue;"&gt;get&lt;/span&gt;;   &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/p&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt;   &lt;span style="color: blue;"&gt;string&lt;/span&gt; Body { &lt;span style="color: blue;"&gt;get&lt;/span&gt;;   &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/p&gt;   &lt;p align="left"&gt;&lt;/p&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;/span&gt;}&lt;/span&gt; &lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p align="left"&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;span style="font-size: 12pt; font-family: 宋体;"&gt;当使用&lt;/span&gt;SimpleRepository&lt;span style="font-family: 宋体;"&gt;对象时，设置构造函数选项&lt;/span&gt;RunMigrations&lt;span style="font-family: 宋体;"&gt;，他将会自动创建你需要的表。&lt;/span&gt;&lt;/p&gt;  &lt;table style="border-collapse: collapse; border: medium none;" border="1" cellpadding="0" cellspacing="0"&gt;  &lt;tbody&gt;&lt;tr&gt;   &lt;td style="width: 426.1pt; border: 1pt solid black; padding: 0cm 5.4pt;" valign="top" width="568"&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;//&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;基于&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: #a31515;"&gt;NorthwindSQLite&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;数据库创建一个&lt;span&gt;repository对象并自动迁移&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;"&gt;var&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt; repo = &lt;span style="color: blue;"&gt;new&lt;/span&gt;   SubSonic.Repository.&lt;span style="color: #2b91af;"&gt;SimpleRepository&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"NorthwindSQLite"&lt;/span&gt;, &lt;span style="color: #2b91af;"&gt;SimpleRepositoryOptions&lt;/span&gt;.RunMigrations);&lt;/span&gt;&lt;/p&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&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: green;"&gt;//var post = repo.Single&amp;lt;Post&amp;gt;(x =&amp;gt; x.Title ==   "My Title");&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&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: #2b91af;"&gt;Post&lt;/span&gt; post = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Post&lt;/span&gt;();&lt;/span&gt;&lt;/p&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; post.ID = &lt;span style="color: #2b91af;"&gt;Guid&lt;/span&gt;.NewGuid().ToString();&lt;/span&gt;&lt;/p&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; post.Title = &lt;span style="color: #a31515;"&gt;"My Title"&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; post.Body = &lt;span style="color: #a31515;"&gt;"My Titlessssssssssssss"&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;   &lt;pre&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&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: blue;"&gt;var&lt;/span&gt; obj = repo.Add&amp;lt;&lt;span style="color: #2b91af;"&gt;Post&lt;/span&gt;&amp;gt;(post);&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="text-align: left; text-indent: 21pt;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;在这个例子中是不能查询&lt;/span&gt;Title&lt;span style="font-family: 宋体;"&gt;是&lt;/span&gt;&amp;#8221;&lt;span&gt; My Title&lt;/span&gt;&amp;#8221;&lt;span style="font-family: 宋体;"&gt;的记录，因为没有&lt;/span&gt;Post&lt;span style="font-family: 宋体;"&gt;表。执行&lt;/span&gt;Single()&lt;span style="font-family: 宋体;"&gt;方法后，&lt;/span&gt;SubSonic&lt;span style="font-family: 宋体;"&gt;将运行迁移，并创建表，这样就不会有错误。&lt;/span&gt; &lt;span style="font-family: 宋体;"&gt;当第一次运行，下面的&lt;/span&gt;SQL&lt;span style="font-family: 宋体;"&gt;将被执行之前选择：&lt;/span&gt;&lt;/p&gt;  &lt;table style="border-collapse: collapse; border: medium none;" border="1" cellpadding="0" cellspacing="0"&gt;  &lt;tbody&gt;&lt;tr&gt;   &lt;td style="width: 426.1pt; border: 1pt solid black; padding: 0cm 5.4pt;" valign="top" width="568"&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;CREATE&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt; TABLE [Posts] (&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;&amp;nbsp;[ID] uniqueidentifier NOT NULL PRIMARY KEY,&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;&amp;nbsp;[Title] nvarchar(255) NOT NULL,&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;&amp;nbsp;[Body] nvarchar(255) NOT NULL,&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;)&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;ALTER&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt; TABLE [Posts]&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;ADD&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt; CONSTRAINT PK_Posts_Key PRIMARY KEY([ID])";&lt;/span&gt;&lt;/pre&gt;   &lt;p align="left"&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="text-align: left; text-indent: -7.1pt;" align="left"&gt;&lt;img src="file:///C:/Users/lae/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg" v:shapes="_x0000_i1025" alt="" height="453" width="620" /&gt;&lt;/p&gt;  &lt;p style="text-align: left; text-indent: 21pt;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;请注意&lt;/span&gt;,&lt;span style="font-family: 宋体;"&gt;表名是复数（默认），&amp;#8220;&lt;/span&gt;ID&lt;span style="font-family: 宋体;"&gt;&amp;#8221;属性选定为主键（默认）和字符串长度默认为&lt;/span&gt;255&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-align: left; text-indent: 21pt;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;你也可以改变&lt;/span&gt;SubSonic&lt;span style="font-family: 宋体;"&gt;生成方法，并使用小的属性设置&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 42pt; text-align: left; text-indent: -21pt;" align="left"&gt;&lt;span style="font-family: Wingdings;"&gt;&amp;#216;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;主键：如果你调用一列&amp;#8220;&lt;/span&gt;ID&lt;span style="font-family: 宋体;"&gt;&amp;#8221;或&amp;#8220;&lt;/span&gt;Key&lt;span style="font-family: 宋体;"&gt;&amp;#8221;或&amp;#8220;&lt;/span&gt;[ClassName]ID&lt;span style="font-family: 宋体;"&gt;&amp;#8221;，无论它的类型都将是表的主键。如果你想到其他的属性列，你可以使用一个主键属性（&amp;#8220;&lt;/span&gt;SubSonicPrimaryKey&lt;span style="font-family: 宋体;"&gt;&amp;#8221;），&lt;/span&gt;SubSonic&lt;span style="font-family: 宋体;"&gt;将使用该列作为主键。&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin-left: 42pt; text-align: left; text-indent: -21pt;" align="left"&gt;&lt;span style="font-family: Wingdings;"&gt;&amp;#216;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;字符串长度：有两种方法告诉&lt;/span&gt;SubSonic&lt;span style="font-family: 宋体;"&gt;的如何处理这一点&lt;/span&gt;,&lt;span style="font-family: 宋体;"&gt;包括使用属性。第一类是&amp;#8220;&lt;/span&gt;SubSonicStringLength&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;int length&lt;span style="font-family: 宋体;"&gt;）&amp;#8221;，第二是&amp;#8220;&lt;/span&gt;SubSonicLongString&lt;span style="font-family: 宋体;"&gt;&amp;#8221;为&lt;/span&gt;nvarchar&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;max&lt;span style="font-family: 宋体;"&gt;）或&lt;/span&gt;LONGTEXT&lt;span style="font-family: 宋体;"&gt;设置，依赖于您的提供程序。&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin-left: 42pt; text-align: left; text-indent: -21pt;" align="left"&gt;&lt;span style="font-family: Wingdings;"&gt;&amp;#216;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;空：默认为不为&lt;/span&gt;null&lt;span style="font-family: 宋体;"&gt;，但你可以修改属性为空类型的。&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin-left: 42pt; text-align: left; text-indent: -21pt;" align="left"&gt;&lt;span style="font-family: Wingdings;"&gt;&amp;#216;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;数值精度：默认值是&lt;/span&gt;10&lt;span style="font-family: 宋体;"&gt;精度和&lt;/span&gt;2&lt;span style="font-family: 宋体;"&gt;位小数点，但你可以改变，随着&amp;#8220;&lt;/span&gt;SubSonicNumericPrecision&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;(int precision, int scale&lt;span style="font-family: 宋体;"&gt;）&amp;#8221;属性。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 42pt; text-align: left; text-indent: -21pt;" align="left"&gt;&lt;span style="font-family: Wingdings;"&gt;&amp;#216;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;忽略属性：你可以使用&amp;#8220;&lt;/span&gt;SubSonicIgnore&lt;span style="font-family: 宋体;"&gt;&amp;#8221;忽略生成的属性。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;span&gt;2.2&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 黑体;"&gt;更新模型&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-align: left; text-indent: 21pt;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;开始部分都是容易的，但是随着你的开发将会更改或移除类的属性，&lt;/span&gt;SubSonic&lt;span style="font-family: 宋体;"&gt;将会很好的配合你的改变。&lt;/span&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;span style="font-family: 宋体;"&gt;例如，假设你已经添加了&lt;/span&gt;PublishDate&lt;span style="font-family: 宋体;"&gt;到您的&lt;/span&gt;Post&lt;span style="font-family: 宋体;"&gt;类：&lt;/span&gt;&lt;/p&gt;  &lt;table style="border-collapse: collapse; border: medium none;" border="1" cellpadding="0" cellspacing="0"&gt;  &lt;tbody&gt;&lt;tr&gt;   &lt;td style="width: 426.1pt; border: 1pt solid black; padding: 0cm 5.4pt;" valign="top" width="568"&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt;   &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Post&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt;   &lt;span style="color: blue;"&gt;string&lt;/span&gt; ID { &lt;span style="color: blue;"&gt;get&lt;/span&gt;;   &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/p&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt;   &lt;span style="color: blue;"&gt;string&lt;/span&gt; Title { &lt;span style="color: blue;"&gt;get&lt;/span&gt;;   &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/p&gt;   &lt;p align="left"&gt;&lt;/p&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt;   &lt;span style="color: blue;"&gt;string&lt;/span&gt; Body { &lt;span style="color: blue;"&gt;get&lt;/span&gt;;   &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/p&gt;   &lt;p align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt;   &lt;span style="color: #2b91af;"&gt;DateTime&lt;/span&gt; PublishDate { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/p&gt;   &lt;pre&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p align="left"&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;span style="font-family: 宋体;"&gt;当下次使用&lt;/span&gt;SimpleRepository&lt;span style="font-family: 宋体;"&gt;进行（&lt;/span&gt;Save/Find/Get&lt;span style="font-family: 宋体;"&gt;）数据操作时，下面的&lt;/span&gt;SQL&lt;span style="font-family: 宋体;"&gt;命令将在此之前执行：&lt;/span&gt;&lt;/p&gt;  &lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;ALTER TABLE [Posts] ADD DateTime datetime NOT NULL CONSTRAINT DF_Posts_PublishDate DEFAULT ('01/01/0001');&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;UPDATE SubSonicTests SET PublishDate ='01/01/0001';&lt;/span&gt;&lt;/pre&gt;  &lt;p align="left"&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;span style="font-family: 宋体;"&gt;在这里发生有如下几件事：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 36pt; text-align: left; text-indent: -36pt;" align="left"&gt;&lt;span&gt;第一，&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;增加的列（不可为空，可以通过使用&lt;/span&gt;DateTime&lt;span style="font-family: 宋体;"&gt;？）。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 36pt; text-align: left; text-indent: -36pt;" align="left"&gt;&lt;span&gt;第二，&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;默认修改的地方（使用&lt;/span&gt;DateTime.MinValue&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;,&lt;span style="font-family: 宋体;"&gt;一个非空列应在生成的时候约定默认值。&lt;/span&gt; &lt;/p&gt;  &lt;p align="left"&gt;UPDATE&lt;span style="font-family: 宋体;"&gt;语句依据设置的默认值处理现有的数据库设置（像&lt;/span&gt;SQLite&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;MySQL&lt;span style="font-family: 宋体;"&gt;或其他数据库）。&lt;/span&gt; &lt;span style="font-family: 宋体;"&gt;另删除的属性将导致列从数据库中删除。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;span&gt;2.3&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 黑体;"&gt;查询&lt;/span&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;span style="font-family: 宋体;"&gt;可以通过&lt;/span&gt;SimpleRepository&lt;span style="font-family: 宋体;"&gt;对象从数据库中查询数据，甚至于使用&lt;/span&gt;LINQ:&lt;/p&gt;  &lt;table style="border-collapse: collapse; border: medium none;" border="1" cellpadding="0" cellspacing="0"&gt;  &lt;tbody&gt;&lt;tr&gt;   &lt;td style="width: 426.1pt; border: 1pt solid black; padding: 0cm 5.4pt;" valign="top" width="568"&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;var repo=new SimpleRepository(SimpleRepositoryOptions.RunMigrations);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;//see if a record exists&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;bool&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt; exists=repo.Exists&amp;lt;Post&amp;gt;(x=&amp;gt;x.Title=="My Title");&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;//use IQueryable&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;var qry=from p in repo.All&amp;lt;Post&amp;gt;()&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where p.Title=="My Title"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select p;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;//get a post&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;var post=repo.Single&amp;lt;Post&amp;gt;(x=&amp;gt;x.Title=="My Title");&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;var post=repo.Single&amp;lt;Post&amp;gt;(key);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;//a lot of posts&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;var posts=repo.Find&amp;lt;Post&amp;gt;(x=&amp;gt;x.Title.StartsWith("M"));&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;//a PagedList of posts - using 10 per page&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;var posts=repo.GetPaged&amp;lt;Post&amp;gt;(0,10);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;//sort by title&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;var posts=repo.GetPaged&amp;lt;Post&amp;gt;("Title",0,10);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;//add a post&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;var newKey=repo.Add(post);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;//add a lot of posts - using a transaction&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;IEnumerable&amp;lt;Post&amp;gt; posts=GetABunchOfNewPosts();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;repo.AddMany(posts);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;//update a post&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;repo.Update(post);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;//update a bunch of posts in a transaction&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;IEnumerable&amp;lt;Post&amp;gt; posts=GetABunchOfNewPosts();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;repo.UpdateMany(posts);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;//delete a post&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;repo.Delete&amp;lt;Post&amp;gt;(key);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;//delete a lot of posts&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;repo.DeleteMany &amp;lt;Post&amp;gt;(x=&amp;gt;x.Title.StartsWith("M"));&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;//delete posts using a transaction&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;IEnumerable&amp;lt;Post&amp;gt; posts=GetABunchOfNewPosts();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;repo.DeleteMany(posts);&lt;/span&gt;&lt;/pre&gt;   &lt;p align="left"&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin-left: 0cm;"&gt;&lt;span&gt;&lt;span&gt;3.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 黑体;"&gt;使用&lt;/span&gt;ActiveRecord&lt;/p&gt;  &lt;p style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体;"&gt;针对您的数据和数据库&lt;/span&gt;ActiveRecord&lt;span style="font-family: 宋体;"&gt;的是最简单，最容易的方法。该模式是，每个实例对应的是一个数据库中的数据行，这意味着每个对象类型可以被认为是你的数据库表。&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体;"&gt;许多开发人员不喜欢与他们的数据库紧耦合工作，但其他人认为这是非常理想方式，消除了与数据库抽象工作有利于面向对象的&amp;#8220;阻抗不匹配&amp;#8221;。&lt;/span&gt; &lt;/p&gt;  &lt;p style="text-indent: 21pt;"&gt;SubSonic&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;ActiveRecord&lt;span style="font-family: 宋体;"&gt;是给你需要的，然后自己决定如何做。你会发现你有能力使用&lt;/span&gt;LINQ&lt;span style="font-family: 宋体;"&gt;是如此易用的代码，快速和简单的依据数据库生成代码。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;3.1&lt;span style="font-family: 黑体;"&gt;设置模板连接&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-indent: 21pt;"&gt;T4&lt;span style="font-family: 宋体;"&gt;模板创造类文件，需要知道连接字符串。要设置：打开文件名为&amp;#8220;&lt;/span&gt;Settings.ttinclude&lt;span style="font-family: 宋体;"&gt;&amp;#8221;，在&lt;/span&gt;@ import&lt;span style="font-family: 宋体;"&gt;语句下面，您会看到三个设置，如下：&lt;/span&gt;&lt;/p&gt;  &lt;table style="border-collapse: collapse; border: medium none;" border="1" cellpadding="0" cellspacing="0"&gt;  &lt;tbody&gt;&lt;tr style="height: 76.75pt;"&gt;   &lt;td style="width: 423.85pt; border: 1pt solid black; padding: 0cm 5.4pt; height: 76.75pt;" valign="top" width="565"&gt;&lt;pre&gt;&lt;span&gt;const&lt;/span&gt; &lt;span&gt;string Namespace = "Northwind.Data";&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;const&lt;/span&gt; &lt;span&gt;string ConnectionStringName = "Northwind";&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;const&lt;/span&gt; &lt;span&gt;string DatabaseName = "Northwind";&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体;"&gt;主要设置是&amp;#8220;&lt;/span&gt;ConnectionStringName&lt;span style="font-family: 宋体;"&gt;&amp;#8221;，&lt;/span&gt; &lt;span style="font-family: 宋体;"&gt;这告诉&lt;/span&gt;SubSonic&lt;span style="font-family: 宋体;"&gt;的使用的哪个数据库连接。&lt;/span&gt;&lt;span&gt;Namespace&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;常量用来&lt;/span&gt;SubSonic&lt;span style="font-family: 宋体;"&gt;生成代码的命名空间。&lt;/span&gt; &lt;span style="font-family: 宋体;"&gt;注意包含的所有&lt;/span&gt;*.tt&lt;span style="font-family: 宋体;"&gt;文件需要匹配您的数据库，如下：&lt;/span&gt;&lt;/p&gt;  &lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;//&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;其他文件&lt;span&gt;: MySQL.ttinclude, SQLite.ttinclude&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;#@ include file="SQLServer.ttinclude" #&amp;gt;&lt;/span&gt;&lt;/pre&gt;  &lt;p&gt;3.2&lt;span style="font-family: 黑体;"&gt;项目中增加&lt;/span&gt;T4&lt;span style="font-family: 黑体;"&gt;模板&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体;"&gt;上述设置完成后，只要将&lt;/span&gt;T4&lt;span style="font-family: 宋体;"&gt;模板拖入到您的项目。因为&lt;/span&gt;&lt;span&gt;Visual Studio 2008&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;中看到一个&amp;#8220;&lt;/span&gt;*.tt&lt;span style="font-family: 宋体;"&gt;&amp;#8221;文件，它会自动执行它。所以你不必做任何事情，只需要运行程序。&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体;"&gt;文件列表如下：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 42pt; text-indent: -21pt;"&gt;&lt;span style="font-family: Wingdings;"&gt;&amp;#178;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;ActiveRecord.tt &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 42pt; text-indent: -21pt;"&gt;&lt;span style="font-family: Wingdings;"&gt;&amp;#178;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;Context.tt &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 42pt; text-indent: -21pt;"&gt;&lt;span style="font-family: Wingdings;"&gt;&amp;#178;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;Settings.ttinclude &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 42pt; text-indent: -21pt;"&gt;&lt;span style="font-family: Wingdings;"&gt;&amp;#178;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;SQLServer.ttinclude OR MySQL.ttinclude OR SQLite.ttinclude &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 42pt; text-indent: -21pt;"&gt;&lt;span style="font-family: Wingdings;"&gt;&amp;#178;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;StoredProcedures.tt (&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;可选项，如果执行存储过程需要添加此文件)&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 42pt; text-indent: -21pt;"&gt;&lt;span style="font-family: Wingdings;"&gt;&amp;#178;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;Structs.tt &lt;/span&gt;&lt;/p&gt;  &lt;p style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体;"&gt;如果更改了数据库，只需右键单击&lt;/span&gt;ActiveRecord.tt&lt;span style="font-family: 宋体;"&gt;，&lt;/span&gt;Context.tt&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;Structs.tt&lt;span style="font-family: 宋体;"&gt;文件并选择&amp;#8220;运行自定义工具&amp;#8221;，将会自动执行它们。&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-indent: 21pt;"&gt;&lt;/p&gt;  &lt;p&gt;3.3&lt;span style="font-family: 黑体;"&gt;查询&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体;"&gt;使用&lt;/span&gt;ActiveRecord&lt;span style="font-family: 宋体;"&gt;的查询非常方便，下面是单元测试的一些例子：&lt;/span&gt;&lt;/p&gt;  &lt;table style="border-collapse: collapse; border: medium none;" border="1" cellpadding="0" cellspacing="0"&gt;  &lt;tbody&gt;&lt;tr&gt;   &lt;td style="width: 426.1pt; border: 1pt solid black; padding: 0cm 5.4pt;" valign="top" width="568"&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;//&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;差钱&lt;span&gt;ID=1的默认单条记录&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;var product = Product.SingleOrDefault(x =&amp;gt; x.ProductID == 1);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;//&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;查询&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;ProductID&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt; &amp;lt;= 10&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;的记录&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;var products = Product.Find(x =&amp;gt; x.ProductID &amp;lt;= 10);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;//&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;获取服务器端的分页列表&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;var products = Product.GetPaged(0,10);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;//&lt;/span&gt;&lt;span style="font-size: 10.5pt;"&gt;使用&lt;span&gt;Linq查询&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;var products = from p in Product.All()&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; join od in OrderDetail.All() on p.ProductID equals od.ProductID&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select p;&lt;/span&gt;&lt;/pre&gt;   &lt;p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体;"&gt;从上面的代码可以中注意与&lt;/span&gt;SubSonic2.0&lt;span style="font-family: 宋体;"&gt;的一些不同。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0cm;"&gt;&lt;span&gt;&lt;span&gt;4.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 黑体;"&gt;结论&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-align: left; text-indent: 21pt;" align="left"&gt;SimpleRepository&lt;span style="font-family: 宋体;"&gt;使用和测试很简单，因为它从&lt;/span&gt;SubSonic.Repository.IRepository&lt;span style="font-family: 宋体;"&gt;继承。如果按照注入模式，即传递一个&lt;/span&gt;IRepository&lt;span style="font-family: 宋体;"&gt;，那么你可以使用你最喜欢的模拟工具或创建一个假的&lt;/span&gt;Repository&lt;span style="font-family: 宋体;"&gt;查询。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lae/aggbug/1713951.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lae/archive/2010/04/16/1713951.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lae/archive/2009/11/25/1610681.html</id><title type="text">System.Data.OracleClient调用带blob等大字段类型参数的存储过程</title><summary type="text">System.Data.OracleClient在插入大字段类型的时候有32K大小限制，据网络收集的一些方法，整理了一下如下(微软企业库示例):必须在获取临时 LOB 之前开始事务。否则，OracleDataReader  将不能获取后面的数据。 还可以通过调用 DBMS_LOB.CREATETEMPORARY 系统存储过程并绑定 LOB  输出参数打开 Oracle 中的临时 LOB。在客户端，...</summary><published>2009-11-25T09:04:00Z</published><updated>2009-11-25T09:04:00Z</updated><author><name>lae</name><uri>http://www.cnblogs.com/lae/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lae/archive/2009/11/25/1610681.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lae/archive/2009/11/25/1610681.html"/></entry><entry><id>http://www.cnblogs.com/lae/archive/2009/09/21/1571287.html</id><title type="text">SubSonic入门(下)</title><summary type="text">本文导读： 1 引言 2 高级应用 2.1 查询  2.2 事务 3 结论 4 附件 5 参考文献1 引言在《SubSonic入门(上)》一文中介绍了一些SubSonic入门的知识，本文旨在探讨SubSonic更深入的应用，为实际项目中的应用提高生产效率和质量。2 进阶应用2.1 查询2.1.1 关联查询//查询Product表中产品关联的种类名称,并且CategoryID大于4的记录DataSe...</summary><published>2009-09-21T10:04:00Z</published><updated>2009-09-21T10:04:00Z</updated><author><name>lae</name><uri>http://www.cnblogs.com/lae/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lae/archive/2009/09/21/1571287.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lae/archive/2009/09/21/1571287.html"/></entry><entry><id>http://www.cnblogs.com/lae/archive/2009/09/21/1571285.html</id><title type="text">SubSonic入门(上)</title><summary type="text">本文导读： 1 引言 2 使用步骤 2.1 配置  2.2 操作数据 3 结论 4 附件 5 参考文献1 引言SubSonic是一个类似Rails的开源.NET项目。你可以把它看作是一把瑞士军刀，它可以用来构建Website和通过ORM方式来访问数据。Rob Conery和Eric Kemp是推动SubSonic的主要开发人员，与项目良好的发展有着密切的关系。作为一个开发人员生产力工具，SubSo...</summary><published>2009-09-21T10:02:00Z</published><updated>2009-09-21T10:02:00Z</updated><author><name>lae</name><uri>http://www.cnblogs.com/lae/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lae/archive/2009/09/21/1571285.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lae/archive/2009/09/21/1571285.html"/></entry><entry><id>http://www.cnblogs.com/lae/archive/2008/10/23/1317907.html</id><title type="text">SubSonic的controller类的FetchByID()错误解决办法</title><summary type="text">使用SubSonic生成的controller类提供的FetchByID（）方法根据主键字段获取对象集合时，在Oracle数据库中出现"ORA-00904"错误。 提请大家修改源代码OracleDataProvider.cs文件808行&amp;#8220;query = select + columns + " FROM " + table.Name + where + order;&amp;#8221;-》&amp;...</summary><published>2008-10-23T06:27:00Z</published><updated>2008-10-23T06:27:00Z</updated><author><name>lae</name><uri>http://www.cnblogs.com/lae/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lae/archive/2008/10/23/1317907.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lae/archive/2008/10/23/1317907.html"/></entry></feed>
