﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-实现梦想与回忆的，叫做现在</title><link>http://www.cnblogs.com/vivid-stanley/</link><description>
Dict.CN 在线词典, 英语学习, 在线翻译
 
 </description><language>zh-cn</language><lastBuildDate>Sat, 06 Sep 2008 21:02:06 GMT</lastBuildDate><pubDate>Sat, 06 Sep 2008 21:02:06 GMT</pubDate><ttl>60</ttl><item><title>《单元测试之道》读书笔记</title><link>http://www.cnblogs.com/vivid-stanley/archive/2008/08/02/1258737.html</link><dc:creator>Stanley.Luo</dc:creator><author>Stanley.Luo</author><pubDate>Sat, 02 Aug 2008 04:05:00 GMT</pubDate><guid>http://www.cnblogs.com/vivid-stanley/archive/2008/08/02/1258737.html</guid><wfw:comment>http://www.cnblogs.com/vivid-stanley/comments/1258737.html</wfw:comment><comments>http://www.cnblogs.com/vivid-stanley/archive/2008/08/02/1258737.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/vivid-stanley/comments/commentRss/1258737.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/vivid-stanley/services/trackbacks/1258737.html</trackback:ping><description><![CDATA[<p>What to Test: Right-BICEP</p>
<p>Right---结果是否正确</p>
<p>B－－边界条件</p>
<p>I－－检查反向关联（用相反的逻辑关系来验证）</p>
<p>C－－交叉检查</p>
<p>E－－Error是否可以强制错误条件发生？</p>
<p>P－－Performance是否满足性能要求？</p>
<p>&nbsp;</p>
<p>使用Mock对象</p>
<p>流行的框架：</p>
<p>DotNetMock</p>
<p>TypeMock</p>
<p>NMock</p>
<p><a class="singleposttitle" id="AjaxHolder_ctl01_TitleUrl" href="http://www.cnblogs.com/idior/archive/2005/08/08/209351.html"><font color="#223355">Rhino Mocks (RhinoMock)2</font></a></p>
<p>Mog(据说最近才出来的)</p>
<p>NUnit 本身也有轻量级的Mock</p>
<p>&nbsp;</p>
<p>好的测试具有的品质（Properties of Good Tests): A-TRIP</p>
<p>A－－Automatic自动化</p>
<p>T－－Thorough彻底的</p>
<p>R－－Repeatable可重复的</p>
<p>I－－Independent独立的</p>
<p>P－－Professinal专业的&nbsp;</p>
<img src ="http://www.cnblogs.com/vivid-stanley/aggbug/1258737.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42123/" target="_blank">[新闻]Google 10周年大事记</a>]]></description></item><item><title>[学习笔记]Math.Round</title><link>http://www.cnblogs.com/vivid-stanley/archive/2008/05/29/1209761.html</link><dc:creator>Stanley.Luo</dc:creator><author>Stanley.Luo</author><pubDate>Thu, 29 May 2008 02:44:00 GMT</pubDate><guid>http://www.cnblogs.com/vivid-stanley/archive/2008/05/29/1209761.html</guid><wfw:comment>http://www.cnblogs.com/vivid-stanley/comments/1209761.html</wfw:comment><comments>http://www.cnblogs.com/vivid-stanley/archive/2008/05/29/1209761.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/vivid-stanley/comments/commentRss/1209761.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/vivid-stanley/services/trackbacks/1209761.html</trackback:ping><description><![CDATA[MSDN 对此方法：<br />
<pre class="libCScode" id="ctl00_rs1_mainContentContainer_ctl20CSharp" space="preserve"><span style="color: blue">public</span> <span style="color: blue">static</span> decimal Round(
decimal d,
<span style="color: blue">int</span> decimals
)
</pre>
<br />
的解说是：<br />
<p>The <span class="parameter">decimals</span> parameter specifies the number of fractional digits in the return value and ranges from 0 to 28. If <span class="parameter">decimals</span> is zero, an integer is returned.<br />
If the value of the digits in <span class="parameter">d</span> to the right of the <span class="parameter">decimals</span> position is halfway between the digit in position <span class="parameter">decimals</span>, that digit is rounded up if it is odd, or left unchanged if it is even. If the precision of <span class="parameter">d</span> is less than <span class="parameter">decimals</span>, <span class="parameter">d</span> is returned unchanged. <br />
<br />
Sample:<br />
Math.Round(3.44, 1); //Returns 3.4.<br />
Math.Round(3.45, 1); //Returns 3.4.<br />
Math.Round(3.46, 1); //Returns 3.5.<br />
<br />
Math.Round(4.34, 1); // Returns 4.3<br />
Math.Round(4.35, 1); // Returns 4.4<br />
Math.Round(4.36, 1); // Returns 4.4<br />
就是说遇到最后一位5的时候， 都让它前面的那位数字变成偶数（如果是偶数就不改变）</p>
<img src ="http://www.cnblogs.com/vivid-stanley/aggbug/1209761.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42122/" target="_blank">[新闻]Google上下二十年</a>]]></description></item><item><title>好一部《闯关东》</title><link>http://www.cnblogs.com/vivid-stanley/archive/2008/03/16/1108063.html</link><dc:creator>Stanley.Luo</dc:creator><author>Stanley.Luo</author><pubDate>Sat, 15 Mar 2008 17:37:00 GMT</pubDate><guid>http://www.cnblogs.com/vivid-stanley/archive/2008/03/16/1108063.html</guid><wfw:comment>http://www.cnblogs.com/vivid-stanley/comments/1108063.html</wfw:comment><comments>http://www.cnblogs.com/vivid-stanley/archive/2008/03/16/1108063.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/vivid-stanley/comments/commentRss/1108063.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/vivid-stanley/services/trackbacks/1108063.html</trackback:ping><description><![CDATA[<p><font face="Verdana">52集的《闯关东》，终于被 我看完了。其实应该早就看完的，过年的时候在家没有事，不用一星期就看了30多集，可是后来来深圳工作了，一是工作忙，二是网络真是TMD地慢。一周也只能看一两集。<br />
<img src="http://v.baidu.com/img/Baidupic/2008/02/29/EDA2863C-16BF-44B7-A926-2AA6DBEACA1F.jpg" border="0"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img src="http://i2.sinaimg.cn/book/temp/U3P112T164D938F3177DT20080107110204.jpg" border="0"  alt="" /><br />
</font><font face="Verdana">总得来说，闯关东真是一部有血有肉，感动无处不在，智慧无处不在的连续剧。</font></p>
<p><font face="Verdana">先来一段媒体的简介吧：<br />
</font></p>
<p><font face="Verdana"><img src="http://i1.sinaimg.cn/ent/pc/2008-01-26/55/U1982P28T55D23649F932DT20080126182825.jpg" border="0"  alt="" /><br />
《闯关东》，讲述的是从清末到九一八事变爆发前(其实是9.18之后），一户山东人家为生活所迫而离乡背井&#8220;闯关东&#8221;的故事，以主人公朱开山的复杂、坎坷的一生为线索，其中穿插了朱开山的三个性格迥异、命运不同的儿子在关东路上遇到的种种磨难和考验，力求真实还原那段悲怆、苍凉、恢弘、悲壮的民族血泪史。书中将再现当年闯关东人放排、伐木、淘金、采矿等大场面，场景横跨半个中国。而在细节上，作者延续了其擅长的在平淡人生中贯串人性关怀的思路，亲情、爱情与故土情的纠结深入人心，对国事、家事、家乡事的担当感人至深.</font></p>
<p><font face="Verdana">&nbsp;&nbsp; 其实我觉得这部连续剧，其中一个很重要的主题就是赞扬山东人，赞扬他们吃苦耐劳，仁义大度，智慧过人。。。。。。。</font></p>
<p><font face="Verdana">吃苦耐劳：从山东到关东一路上的征服的苦难，屈辱足以证明，活下来真的很不容易！</font></p>
<p><font face="Verdana">仁义大度：韩老海，潘五爷的百般发难，朱开山都忍了下来。救一个被认为患上了瘟疫的日本孩子－郎，秀儿，整个朱家不顾一切，试问又有多少人能做到？</font></p>
<p><font face="Verdana">智慧过人：这集中表现在朱开山上，当然老三传杰，老大的媳妇那文也谋略不错。剧情在这一点上，我觉得跟《大染坊》有点相似：都是先同周围的人（中国人）斗智，而后又和好，后来一致对外，跟日本人斗！</font></p>
<p><font face="Verdana">当然，也有些地方，个人觉得不合理的，例如一郞怎么也不可能变得主动帮助森田去害朱家，而且一郎也没有必要也不可能想去死（他会舍得秀儿吗？）</font></p>
<p><font face="Verdana">虽然我很少看电视剧，但我觉得这部绝对是精品。</font></p>
<p><font face="Verdana">虽然大陆的娱乐业不如港台发达，但是看了这部反而让我觉得港台都注入也商业因素，没有什么深度！<br />
</font></p>
<img src ="http://www.cnblogs.com/vivid-stanley/aggbug/1108063.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42120/" target="_blank">[新闻]中华英才网面临外资吞并</a>]]></description></item><item><title>上海与深圳，群硕与晨星(二）</title><link>http://www.cnblogs.com/vivid-stanley/archive/2008/03/08/1096257.html</link><dc:creator>Stanley.Luo</dc:creator><author>Stanley.Luo</author><pubDate>Sat, 08 Mar 2008 02:46:00 GMT</pubDate><guid>http://www.cnblogs.com/vivid-stanley/archive/2008/03/08/1096257.html</guid><wfw:comment>http://www.cnblogs.com/vivid-stanley/comments/1096257.html</wfw:comment><comments>http://www.cnblogs.com/vivid-stanley/archive/2008/03/08/1096257.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/vivid-stanley/comments/commentRss/1096257.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/vivid-stanley/services/trackbacks/1096257.html</trackback:ping><description><![CDATA[&nbsp;
<p><span style="font-family: 宋体">说了这么多两座城市的比较，再来比较一下我呆过的两家公司的比较吧。</span></p>
<p><span style="font-family: 宋体">总得来说，两家公司都有千秋，也不能说谁好谁不好。</span></p>
<p><span style="font-family: 宋体">群硕是专业做软件开发的，晨星是专业做金融服务（老大说严格区分这不是金融业，而是金融服务业），是专门做基金分析评级，投资资讯的，软件产品只是其资讯的一种发布形式，虽然说也很重要，我想应该不能说得上核心吧。</span></p>
<p><span style="font-family: 宋体">两家公司都是美资企业。</span></p>
<p><span style="font-family: 宋体">群硕的文化是很严谨，很规范，晨星的文化很开放，很自由：</span></p>
<p><span style="font-family: 宋体">群硕每天</span>8<span style="font-family: 宋体">：</span>30<span style="font-family: 宋体">上班，晚上</span>XX<span style="font-family: 宋体">：</span>XX<span style="font-family: 宋体">下班，之所以用</span>XX<span style="font-family: 宋体">来表示，是因为它没有定下班时间，虽然没有定义域，但是却有值域：一般不会早于晚上</span>8<span style="font-family: 宋体">点，</span>10<span style="font-family: 宋体">点后很平常。</span></p>
<p><span style="font-family: 宋体">晨星每天</span>9<span style="font-family: 宋体">：</span>00<span style="font-family: 宋体">下班，下午</span>6<span style="font-family: 宋体">：</span>00<span style="font-family: 宋体">下班，</span>6<span style="font-family: 宋体">：</span>00PM<span style="font-family: 宋体">是绝对可以回家的。</span></p>
<p><span style="font-family: 宋体">两家公司对员工服装都是没有特别要求，穿着可以比较随意。</span></p>
<p><span style="font-family: 宋体">群硕上班一定要带卡，因为没有卡就进不了门，要是那一天忘记带卡了，</span>CTO<span style="font-family: 宋体">会找你谈话。</span></p>
<p><span style="font-family: 宋体">晨星也要求带卡，但因为那不是门禁（门禁是用指纹的），所以不带也没有多大关系。</span></p>
<p><span style="font-family: 宋体">群硕的对工作区域有严格权限划分。员工是绝对进不了</span>HR<span style="font-family: 宋体">办公室的。</span></p>
<p><span style="font-family: 宋体">晨星的工作区域很开放，只要你是晨星的员工，哪里都可以去（当然女</span>WC<span style="font-family: 宋体">男生是不可以去的，</span>^_^<span style="font-family: 宋体">）</span>.</p>
<p><span style="font-family: 宋体">晨星有两条休闲走廊，装饰得像个小酒吧似的，员工可以在哪里吃饭，小休息，聊天。。。。</span></p>
<p><span style="font-family: 宋体">晨星的设备使用也不怎么严格，打印机都可以公用，电脑用</span>USB<span style="font-family: 宋体">接口，光驱，对软件安装限制很少（盗版软件，</span>QQ<span style="font-family: 宋体">，</span>BT<span style="font-family: 宋体">是严格禁止的）（这个对软件开发人员宽松一些，其它人员严格一些）。</span></p>
<p><span style="font-family: 宋体">群硕使用打印机是要经理批准的。软件安装限制非常严格，自己不能安装软件。</span></p>
<p><span style="font-family: 宋体">群硕很强调一致性，其实我觉得这点挺好。晨星不怎么讲究这个。</span></p>
<p><span style="font-family: 宋体">群硕软件开发流程很规范，员工也是执行得相当好，培训机制非常不错。晨星开发流程不怎么规范，讲究先把产品做出来。</span></p>
<p><span style="font-family: 宋体">群硕的福利特点是有咖啡奶茶。晨星只有纯净水。</span></p>
<p><span style="font-family: 宋体">晨星的福利特点是收费考试费报销，书费报销上限是</span>1500/<span style="font-family: 宋体">年。考试费一般是针对</span>CFA<span style="font-family: 宋体">的。</span></p>
<span style="font-size: 10.5pt; font-family: 宋体">其实还有很多细节的地方体现两种不同的公司文化，有空再慢慢说吧。<br />
<br />
(P.S 以上所有观点纯属个人认为，如有出入敬请原谅）</span>
<img src ="http://www.cnblogs.com/vivid-stanley/aggbug/1096257.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42119/" target="_blank">[新闻]软件收入百强张榜 华为中兴海尔列前三</a>]]></description></item><item><title>上海与深圳，群硕与晨星</title><link>http://www.cnblogs.com/vivid-stanley/archive/2008/03/04/1090832.html</link><dc:creator>Stanley.Luo</dc:creator><author>Stanley.Luo</author><pubDate>Tue, 04 Mar 2008 15:49:00 GMT</pubDate><guid>http://www.cnblogs.com/vivid-stanley/archive/2008/03/04/1090832.html</guid><wfw:comment>http://www.cnblogs.com/vivid-stanley/comments/1090832.html</wfw:comment><comments>http://www.cnblogs.com/vivid-stanley/archive/2008/03/04/1090832.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnblogs.com/vivid-stanley/comments/commentRss/1090832.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/vivid-stanley/services/trackbacks/1090832.html</trackback:ping><description><![CDATA[摘要: 上海大，深圳小。据说光一个浦东区就有香港这么大，而深圳还没有香港大，可想而知。<br><br>上海时尚式，深圳花园式.......<br>&nbsp;&nbsp;<a href='http://www.cnblogs.com/vivid-stanley/archive/2008/03/04/1090832.html'>阅读全文</a><img src ="http://www.cnblogs.com/vivid-stanley/aggbug/1090832.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42117/" target="_blank">[新闻]马云vs孙正义：两个“疯子”的对话</a>]]></description></item><item><title>上海与深圳，群硕与晨星</title><link>http://www.cnblogs.com/vivid-stanley/archive/2008/03/04/1090831.html</link><dc:creator>Stanley.Luo</dc:creator><author>Stanley.Luo</author><pubDate>Tue, 04 Mar 2008 15:48:00 GMT</pubDate><guid>http://www.cnblogs.com/vivid-stanley/archive/2008/03/04/1090831.html</guid><wfw:comment>http://www.cnblogs.com/vivid-stanley/comments/1090831.html</wfw:comment><comments>http://www.cnblogs.com/vivid-stanley/archive/2008/03/04/1090831.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/vivid-stanley/comments/commentRss/1090831.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/vivid-stanley/services/trackbacks/1090831.html</trackback:ping><description><![CDATA[<span style="font-family: 宋体">跳槽到深圳已经半个月左右了，对新的城市，新的工作环境也有了一定的认识。</span>
<p><span style="font-family: 宋体">在此就作在简单的比较吧。</span></p>
<p><span style="font-family: 宋体">上海大，深圳小。据说光一个浦东区就有香港这么大，而深圳还没有香港大，可想而知。</span></p>
<p><span style="font-family: 宋体">上海时尚式，深圳花园式。上海讲究赶上世界最时尚的东西，例如磁悬浮，例如宁波到上海的跨海大桥。深圳声称要建设花园式城市，我觉得它确实做到了，每一条大路，它都一点也不吝啬土地去种花种草种树，马路中间，非机动车道两旁，随处可见的树林（称得树林的，一方面是树多，一方面是树大）。走在马路上，你会感觉到自己走在花园里。</span></p>
<p><span style="font-family: 宋体">上海消费高，貌似深圳的更高。原来我在上海租房至多花</span>800<span style="font-family: 宋体">元</span>/<span style="font-family: 宋体">月，现在至少也要</span>950<span style="font-family: 宋体">元</span>/<span style="font-family: 宋体">月，当然可能是地段不同，其实这具没法比。</span></p>
<p><span style="font-family: 宋体">上海地铁很发达，深圳地铁期待。上海据说都快开通</span>10<span style="font-family: 宋体">号线了，深圳连</span>2<span style="font-family: 宋体">号线还没有开通。</span></p>
<p><span style="font-family: 宋体">上海交通堵塞相对少，深圳交通堵塞比较多。这可能跟深圳的特殊性有关，它是分关内关外的，交通堵塞主要发生在各个关口附近。不过上海公交不打折，深圳用卡至少打</span>8<span style="font-family: 宋体">折，换乘打的折扣更多。</span></p>
<p><span style="font-family: 宋体">晚了，明天再续。。。。。。。。。</span></p>
 <img src ="http://www.cnblogs.com/vivid-stanley/aggbug/1090831.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42117/" target="_blank">[新闻]马云vs孙正义：两个“疯子”的对话</a>]]></description></item><item><title>08到来现金鼠，奥运临近显红牛！</title><link>http://www.cnblogs.com/vivid-stanley/archive/2008/02/07/1065846.html</link><dc:creator>Stanley.Luo</dc:creator><author>Stanley.Luo</author><pubDate>Thu, 07 Feb 2008 15:21:00 GMT</pubDate><guid>http://www.cnblogs.com/vivid-stanley/archive/2008/02/07/1065846.html</guid><wfw:comment>http://www.cnblogs.com/vivid-stanley/comments/1065846.html</wfw:comment><comments>http://www.cnblogs.com/vivid-stanley/archive/2008/02/07/1065846.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/vivid-stanley/comments/commentRss/1065846.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/vivid-stanley/services/trackbacks/1065846.html</trackback:ping><description><![CDATA[<br />
标题是我家门前的春联，连我自己也惊讶，这两句话竟然是我想出来的，<img src="http://www.cnblogs.com/Emoticons/qface/055242240.gif"  alt="" /><br />
在此也祝所有博客园的朋友们鼠年快乐！<br />
<br />
人们都说一年之计在春，所以我也在新年的第一天（现在是23：04，还算，哈哈）计划一下我今年的打算:<br />
1. 工作阵地从上海转移到了深圳，希望尽快适应这种转变！<br />
2. 塑造全新自我，以积极向上的面貌与心态对待工作与生活，让工作有成就！<br />
3. 多参加体育活动，提高网球技术，增加体重！<br />
4. 多研究技术，做到&#8220;一专多能&#8221;，研究学习一下如：C++, Ruby，Open Source, Embeded, 非Windows平台。<br />
5. 多了解业务，新公司是做金融方面的，就多学习金融方面的知识。（能考个CFA最好）<br />
6. 提高英语，希望能出一次国。（能考个托福或者GRE最好）
<img src ="http://www.cnblogs.com/vivid-stanley/aggbug/1065846.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42116/" target="_blank">[新闻]消息称MySQL创始人已向Sun提交辞呈</a>]]></description></item><item><title>Debug 对 Linq to Sql 有什么影响吗？</title><link>http://www.cnblogs.com/vivid-stanley/archive/2008/01/30/1058128.html</link><dc:creator>Stanley.Luo</dc:creator><author>Stanley.Luo</author><pubDate>Tue, 29 Jan 2008 17:27:00 GMT</pubDate><guid>http://www.cnblogs.com/vivid-stanley/archive/2008/01/30/1058128.html</guid><wfw:comment>http://www.cnblogs.com/vivid-stanley/comments/1058128.html</wfw:comment><comments>http://www.cnblogs.com/vivid-stanley/archive/2008/01/30/1058128.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/vivid-stanley/comments/commentRss/1058128.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/vivid-stanley/services/trackbacks/1058128.html</trackback:ping><description><![CDATA[<p>关于 Table&lt;TEntity&gt;.Attach()，据说它的作用就是可以在不同的DataContext当中附加数据，让被附加的数据（实体）即使在外部（DataContext上下文之外）修改也可以让别的DataContext中的对应数据得以更新。<br />
<br />
假设我已经有一个Category的实体类与对应的数据库表。<br />
相关类代码如下：</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;DataAccess<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img id="Codehighlighter1_32_459_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_32_459_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_32_459_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_32_459_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_32_459_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_32_459_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_32_459_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_32_459_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_32_459_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_32_459_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;DLContext&nbsp;dtx;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" /><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;DataAccess()<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img id="Codehighlighter1_109_190_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_109_190_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_109_190_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_109_190_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_109_190_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_109_190_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_109_190_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_109_190_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_109_190_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_109_190_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dtx&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DLContext();<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dtx.Log&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Console.Out;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" /><br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;DLContext&nbsp;Instance<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img id="Codehighlighter1_241_324_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_241_324_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_241_324_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_241_324_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_241_324_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_241_324_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_241_324_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_241_324_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_241_324_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_241_324_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">get</span><span style="color: #000000"><br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img id="Codehighlighter1_271_314_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_271_314_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_271_314_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_271_314_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_271_314_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_271_314_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_271_314_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_271_314_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_271_314_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_271_314_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;dtx;<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Attach(Category&nbsp;cy)<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img id="Codehighlighter1_386_452_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_386_452_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_386_452_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_386_452_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_386_452_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_386_452_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_386_452_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_386_452_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_386_452_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_386_452_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dtx.GetTable</span><span style="color: #000000">&lt;</span><span style="color: #000000">Category</span><span style="color: #000000">&gt;</span><span style="color: #000000">().Attach(cy,&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" /><br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;DLContext:DataContext<br />
<img id="Codehighlighter1_43_352_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_43_352_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_43_352_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_43_352_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_43_352_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_43_352_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_43_352_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_43_352_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_43_352_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_43_352_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;MappingSource&nbsp;mappingSource&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;AttributeMappingSource();<br />
<img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;connectionString</span><span style="color: #000000">=</span><span style="color: #800000">@"</span><span style="color: #800000">Server=.\SQLExpress;Database=Helloworld;User&nbsp;ID=xxx;Password=xxxx;</span><span style="color: #800000">"</span><span style="color: #000000">;<br />
<img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;DLContext()<br />
<img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;</span><span style="color: #0000ff">base</span><span style="color: #000000">(connectionString,&nbsp;mappingSource)<br />
<img id="Codehighlighter1_335_346_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_335_346_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_335_346_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_335_346_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_335_346_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_335_346_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_335_346_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_335_346_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_335_346_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_335_346_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Main(</span><span style="color: #0000ff">string</span><span style="color: #000000">[]&nbsp;args)<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img id="Codehighlighter1_48_113_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_48_113_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_48_113_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_48_113_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_48_113_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_48_113_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_48_113_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_48_113_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_48_113_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_48_113_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TestAttach();<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.Read();<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;TestAttach()<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img id="Codehighlighter1_163_1131_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_163_1131_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_163_1131_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_163_1131_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_163_1131_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_163_1131_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_163_1131_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_163_1131_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_163_1131_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_163_1131_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;(DLContext&nbsp;ctx&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DLContext())<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img id="Codehighlighter1_229_1121_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_229_1121_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_229_1121_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_229_1121_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_229_1121_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_229_1121_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_229_1121_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_229_1121_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_229_1121_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_229_1121_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;category&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(from&nbsp;c&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;ctx.GetTable</span><span style="color: #000000">&lt;</span><span style="color: #000000">Category</span><span style="color: #000000">&gt;</span><span style="color: #000000">()&nbsp;select&nbsp;c).FirstOrDefault();<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;category.Name;<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataAccess.Attach(category);<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" /><br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">Category&nbsp;ID={0},Name={1}</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;category.KeyID,&nbsp;category.Name);<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" /><br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;category.Name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">After&nbsp;modifying</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;DateTime.Now.ToString();<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" /><br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;category2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(from&nbsp;c&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;DataAccess.Instance.GetTable</span><span style="color: #000000">&lt;</span><span style="color: #000000">Category</span><span style="color: #000000">&gt;</span><span style="color: #000000">()&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;c.KeyID&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;category.KeyID&nbsp;select&nbsp;c).SingleOrDefault();<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">After&nbsp;changing&nbsp;the&nbsp;value&nbsp;of&nbsp;property.</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">Category&nbsp;ID={0},Name={1}</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;category.KeyID,&nbsp;category.Name);<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">Category2&nbsp;ID={0},Name={1}</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;category2.KeyID,&nbsp;category2.Name);<br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">Reference&nbsp;equeals&nbsp;={0}</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;Object.ReferenceEquals(category,&nbsp;category2));<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<p><br />
为什么当我不设断点的时候，会出现Exception:<br />
<font style="color: #ff0000" face="Verdana">"An attempt has been made to Attach or Add an entity that is not new, perhaps having been loaded from another DataContext.&nbsp; This is not supported."</font><br />
当我在13行&nbsp; <font face="Verdana">DataAccess.Attach(category);处设了一个断点，而且用鼠标放在category上查看了一下属性值，继续运行，它就不会出错，一切正常了！！！！<br />
<br />
是什么原因啊？？？？？</font> <br />
---------------------------------------------------------------------</p>
<p>经大侠指引，终天知道原来因为Category 表中有一个外键，对于实体类Category, 有一个字段： <br />
<br />
private EntityRef&lt;Parent&gt;
<parent>_Parent; <br />
<br />
必须在调用 Attach()方法之前，先令 <br />
_Parent=default(EntityRef&lt;Parent&gt;
<parent>); <br />
<br />
综上所述，为了方便使用，我在Category类中加了一个Detach()方法：</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Detach()<br />
<img id="Codehighlighter1_21_65_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_21_65_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_21_65_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_21_65_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_21_65_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_21_65_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_21_65_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_21_65_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_21_65_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_21_65_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;_Parent&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">default</span><span style="color: #000000">(EntityRef</span><span style="color: #000000">&lt;</span><span style="color: #000000">Parent</span><span style="color: #000000">&gt;</span><span style="color: #000000">);<br />
<img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
<br />
必须在调用 <font face="Verdana">Table&lt;TEntity&gt;</font>.Attach()方法之前，先调用category.Detach()方法。<br />
<p><br />
<br />
&nbsp;</p>
<img src ="http://www.cnblogs.com/vivid-stanley/aggbug/1058128.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42115/" target="_blank">[新闻]谷歌Chrome浏览器即将更换LOGO颜色？</a>]]></description></item><item><title>2008静静地走来，正如2007悄悄地离去</title><link>http://www.cnblogs.com/vivid-stanley/archive/2007/12/31/1021829.html</link><dc:creator>Stanley.Luo</dc:creator><author>Stanley.Luo</author><pubDate>Mon, 31 Dec 2007 13:02:00 GMT</pubDate><guid>http://www.cnblogs.com/vivid-stanley/archive/2007/12/31/1021829.html</guid><wfw:comment>http://www.cnblogs.com/vivid-stanley/comments/1021829.html</wfw:comment><comments>http://www.cnblogs.com/vivid-stanley/archive/2007/12/31/1021829.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/vivid-stanley/comments/commentRss/1021829.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/vivid-stanley/services/trackbacks/1021829.html</trackback:ping><description><![CDATA[<p>2008，再过几周，我就要离开上海，到广州/深圳去了。<br />
工作还没有定，所以还不知道目的地在哪里。<br />
<br />
在上海呆了1年半，说实在，还真挺舍不得。可是，就像舍不得2007要过去一样，上海终究还是对它说BYE BYE。<br />
上海还是很有潜力，很有魅力的城市。可是为了离家近点，只能&#8220;忍痛割爱&#8221;了。<br />
回顾2007，觉得真是非常值得纪念的一年：<br />
这是写完论文，照完毕业照，离开大学校园，真正走进社会的一年。<br />
这是我从一个基本不怎么运动的人，转变成为喜欢打网球的一年。<br />
这是我跟随&#8220;全民炒股时代&#8221;潮流第一次成为股民，才知道天下永远没有免费的午餐，没有这么大只青蛙满街跳的一年。<br />
<br />
别了，2007，别了，上海。但愿我能在新的地方，新的起点，早日实现我的梦想。</p>
<p>我知道，实现梦想与回忆的，叫做现在。</p>
<img src ="http://www.cnblogs.com/vivid-stanley/aggbug/1021829.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42101/" target="_blank">[新闻]淘宝网合并阿里妈妈 专家称阿里巴巴或有新战略</a>]]></description></item><item><title>学习笔记（2）</title><link>http://www.cnblogs.com/vivid-stanley/archive/2007/12/06/986013.html</link><dc:creator>Stanley.Luo</dc:creator><author>Stanley.Luo</author><pubDate>Thu, 06 Dec 2007 15:55:00 GMT</pubDate><guid>http://www.cnblogs.com/vivid-stanley/archive/2007/12/06/986013.html</guid><wfw:comment>http://www.cnblogs.com/vivid-stanley/comments/986013.html</wfw:comment><comments>http://www.cnblogs.com/vivid-stanley/archive/2007/12/06/986013.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/vivid-stanley/comments/commentRss/986013.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/vivid-stanley/services/trackbacks/986013.html</trackback:ping><description><![CDATA[<p dir="ltr" style="margin-right: 0px">这次应该说是经验总结，以下是我在工作中的几点经验总结，都是个人意见，望大家一起讨论， 多多交流，批评，指正。<br />
<br />
1. 注意&#8220;重构&#8221;的影响程度。对于公用代码（模块）的修改尤其要慎重，到了项目开发的后期，如果不是非改不可的修改，还是不要改为好。<br />
&nbsp;&nbsp;例如一个典型的数据库应用程序，如果要重命名一个字段名，则下面的项都会受到牵连：<br />
SQL Script;<br />
Hibernate 映射文件(*.hbm.xml);<br />
实体类;<br />
DAO层;<br />
表现层;<br />
<br />
2. 关于时间。<br />
声明一个DateTime实例，应该设置其默认值，如果不设，其值将是0001年1月1日，这样插入数据库将会出现问题。<br />
在后台（代码，数据库）里的时间值，应该采用UTC时间（格林威治标准时间），对于CS/BS结构的应用，如果会有不同时区的用户去使用的话，不采用UTC时间将会导致时间不一致，不可比较的问题。当然在表现层还是要转换成当地时间来向用户显示的。<br />
<br />
3. （C#）应该写internal 的地方就不要写public,例如同一个solution下会有多人开发多个模块(project)，会有多个命名空间，如果你自己的子模块有一个Util类，只有你自己的模块用到，但是把它写成public了，这样很可能别人也写了一个这样的类，这样就会产生名字冲突（当然可以通过在类名前加命名空间前缀来解决，但是这样长的一串，还是不大好！）<br />
<br />
4. 尽量为代码多打Log, 因为当你的产品拿出去用户用的时候，如果出现了问题，是不可能用开发阶段的一步一步Debug去找问题所在的。<br />
<br />
5. 对于Web Application， 如果有IIS， 还是尽量用IIS来作平常调试，而不是用Vs.net 2005 自带的Web Server，因为他们还是有不少地方不一样的。并且产品Release之前， 要多在不同的操作系统，浏览器（即使是版本不同）测试，例如同一个网页可能在IE6与IE7完全两个样了。还有，建议使用预编译来部署，因为这样做一方面可能提高性能，一方面的把源代码隐藏。<br />
<br />
6. 对于WCF 的Contract定义，建议化多个参数为一个参数，例如有一个OperationContract是<br />
Login(string userName, string password), 应该先定义一个类：ParamOfLogin, 里面就两个属性：UserName, Password。 Login就定义成Login(ParamOfLogin loginParams); 这样做可以减少代码耦合性，如果哪一天需要往Login里面再加一个参数，就可以只加一个属性而用不着动Contract/接口了。<br />
<br />
7. 写代码要写易于测试（至少是可测试）的代码。如果一段代码是无法用UT或者FT去测的话，其正确性将无法用自动化工具来保证。<br />
<br />
8. 开发的每一个阶段都不能脱离需求（SR）。<br />
9. 对于你给别人定的Schedule, 应该多设Checkpoint， 常问问他完全地怎么样了。<br />
</p>
<img src ="http://www.cnblogs.com/vivid-stanley/aggbug/986013.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42096/" target="_blank">[新闻]微软研究院发布 AutoCollage - 整理并融合照片</a>]]></description></item></channel></rss>