﻿<?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>博客园-shore</title><link>http://www.cnblogs.com/shore/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 21 Aug 2008 18:23:29 GMT</lastBuildDate><pubDate>Thu, 21 Aug 2008 18:23:29 GMT</pubDate><ttl>60</ttl><item><title>VS2008开发Silverlight程序</title><link>http://www.cnblogs.com/shore/archive/2008/01/25/1053218.html</link><dc:creator>shore</dc:creator><author>shore</author><pubDate>Fri, 25 Jan 2008 07:06:00 GMT</pubDate><guid>http://www.cnblogs.com/shore/archive/2008/01/25/1053218.html</guid><wfw:comment>http://www.cnblogs.com/shore/comments/1053218.html</wfw:comment><comments>http://www.cnblogs.com/shore/archive/2008/01/25/1053218.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/shore/comments/commentRss/1053218.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/shore/services/trackbacks/1053218.html</trackback:ping><description><![CDATA[之前一直以为VS2008不能写silverlight 1.0的程序，而且在这装silverlight 1.0 SDK时也只提示是否安装VS2005的开发模板。看来我在<a class="postTitle2" id="homepage1_HomePageDays_DaysList_ctl01_DayItem_DayList_ctl00_TitleUrl" href="http://www.cnblogs.com/shore/archive/2008/01/24/1051939.html">silverlight开发环境配置</a> 中说silverlight 1.0开发需要安装vs2005是错误的，其实silverlight 1.0如果安装有sdk的话，是可以通过记事本来写的，当然，如果你对xaml不太熟，你最好要有一个Expression Blend 2用来做设计，他会自动产生xaml代码。<br />
<br />
VS2008默认是没有silverlight的开发模板的，微软在前不久发布了仅适用于开发人员用的SilverLight 1.1 SDK Alpha Refresh，你可以<a href="http://go.microsoft.com/fwlink/?LinkID=89145">在此</a>下载到，和将VS2008更新为具有开发Silverlight应用程序所需要的Javascript和托管代码功能（<a href="http://go.microsoft.com/fwlink/?LinkID=89149&amp;clcid=0x409">下载</a>），这装后者前，请先确保安装了1.1 的sdk。这样VS2008就有开发silverlight 1.0和silverlight 2.0的功能了。<br />
一、Silverlight 1.0<br />
<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/shore/silverlight1.JPG" border="0" /><br />
<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/shore/silverlight2.JPG" border="0" /><br />
二、Silverlight 2.0<br />
<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/shore/silverlight3.JPG" border="0" /><br />
<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/shore/silverlight4.JPG" border="0" /><br />
<img src ="http://www.cnblogs.com/shore/aggbug/1053218.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41822/" target="_blank">[新闻]第一财经周刊:当前互联网世界正处无秩序时代</a>]]></description></item><item><title>VS2008对Javascript调试的增强</title><link>http://www.cnblogs.com/shore/archive/2008/01/25/1052966.html</link><dc:creator>shore</dc:creator><author>shore</author><pubDate>Fri, 25 Jan 2008 05:10:00 GMT</pubDate><guid>http://www.cnblogs.com/shore/archive/2008/01/25/1052966.html</guid><wfw:comment>http://www.cnblogs.com/shore/comments/1052966.html</wfw:comment><comments>http://www.cnblogs.com/shore/archive/2008/01/25/1052966.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/shore/comments/commentRss/1052966.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/shore/services/trackbacks/1052966.html</trackback:ping><description><![CDATA[在上一篇blog中我们说到vs2008对Javascript智能感应的增强，现在我们来看vs2008对于调试javascript有哪此功能。<br />
ScottGu已经非常清楚的描述了这个特性，<a href="http://weblogs.asp.net/scottgu/archive/2007/07/19/vs-2008-javascript-debugging.aspx">VS 2008 JavaScript Debugging </a><br />
<img src="http://www.scottgu.com/blogposts/debugger/step6.jpg" border="0"  alt="" /><br />
如果你在vs2008中按f5出现如图窗口<br />
<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/shore/jsdebug1.JPG" border="0" /><br />
IE已经禁用了脚本调试功能，请在调试前先启用IE的调试脚本功能。<br />
<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/shore/jsdebug2.JPG" border="0" /><br />
<img src ="http://www.cnblogs.com/shore/aggbug/1052966.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41822/" target="_blank">[新闻]第一财经周刊:当前互联网世界正处无秩序时代</a>]]></description></item><item><title>VS2008对Javascript智能感应的增强</title><link>http://www.cnblogs.com/shore/archive/2008/01/25/1052907.html</link><dc:creator>shore</dc:creator><author>shore</author><pubDate>Fri, 25 Jan 2008 04:38:00 GMT</pubDate><guid>http://www.cnblogs.com/shore/archive/2008/01/25/1052907.html</guid><wfw:comment>http://www.cnblogs.com/shore/comments/1052907.html</wfw:comment><comments>http://www.cnblogs.com/shore/archive/2008/01/25/1052907.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/shore/comments/commentRss/1052907.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/shore/services/trackbacks/1052907.html</trackback:ping><description><![CDATA[<p>ScottGu已经有Post描述Visual Studio 2008对JavaScript智能感应的强大功能。<a href="http://weblogs.asp.net/scottgu/archive/2007/06/21/vs-2008-javascript-intellisense.aspx">VS 2008 JavaScript Intellisense</a><br />
<u>包括以下内容：<br />
1.JavaScript Type Inference</u><br />
<u>2.Intellisense for External JavaScript Libraries</u><br />
<u>3.Adding Intellisense Hints to JavaScript</u><br />
<u>4.Intellisense within External JavaScript files<br />
<br />
</u>在Adding智能感觉的Hints中丢掉了对Javascript方法增加注释的图<br />
<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/shore/js.JPG" border="0" /><br />
我尝试把注释写到方法体上面，像C#一样，但Interllisense Hints找不到它。对于javascript的注释，vs2008暂时还不能自动生成这个结构，需要手工输入。<br />
<br />
///&lt;reference... 可以从vs的solution explorer拖动文件到右边到编辑页中产生。</p>
<img src ="http://www.cnblogs.com/shore/aggbug/1052907.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41822/" target="_blank">[新闻]第一财经周刊:当前互联网世界正处无秩序时代</a>]]></description></item><item><title>silverlight开发环境配置</title><link>http://www.cnblogs.com/shore/archive/2008/01/24/1051939.html</link><dc:creator>shore</dc:creator><author>shore</author><pubDate>Thu, 24 Jan 2008 09:35:00 GMT</pubDate><guid>http://www.cnblogs.com/shore/archive/2008/01/24/1051939.html</guid><wfw:comment>http://www.cnblogs.com/shore/comments/1051939.html</wfw:comment><comments>http://www.cnblogs.com/shore/archive/2008/01/24/1051939.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/shore/comments/commentRss/1051939.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/shore/services/trackbacks/1051939.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; <span lang="EN-US" style="font-size: 9pt; font-family: 'Arial','sans-serif'">Silverlight</span><span style="font-size: 9pt; font-family: 宋体">是一个跨浏览器的、跨平台的插件，为网络带来下一代基于</span><span lang="EN-US" style="font-size: 9pt; font-family: 'Arial','sans-serif'">.NET</span><span style="font-size: 9pt; font-family: 宋体">的媒体体验和丰富的交互式应用程序。</span><br />
&nbsp;&nbsp; silverlight早期的名字叫wpf/e，目前silverlight 1.0正式版已经发布，silverlight 1.1更名为silverlight 2.0，目前是Alpha Refresh。<br />
&nbsp;&nbsp;<img src="http://www.microsoft.com/silverlight/images/icon_sl.jpg" border="0"  alt="" /> microsoft silverlight<br />
&nbsp;&nbsp;&nbsp; 如果你只需要看silverlight程序，你只需下载一个1.4M多的silverlight runtime，你可以通过<a href="http://www.microsoft.com/silverlight/install.aspx#4_6">这里</a>进行安装。或者在浏览silverlight程序时，不能看到内容，只有一个silverlight图标，点图标会提示需要安装silverght runtime，确认并自动下载并安装。<br />
&nbsp;&nbsp; 如果你要做silverlight 1.0的开发，你需要在<a href="http://go.microsoft.com/fwlink/?LinkID=89376&amp;clcid=0x409">这里</a>下载silverlight 1.0 SDK&nbsp;，如果你有visual studio 2005，则sdk在安装时会提示你是否安装visual studio 2005的silverlight开发模板，如果没有visual studio 2005也没有关系，你可以用记事本来写silverlight程序。<br />
&nbsp; 如果你要开发silverlight 2.0的程序，你需要下载<a id="ctl00_mainContentContainer_ctl04" title="Silverlight 1.1 Alpha September Refresh" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl04',this);" href="http://www.microsoft.com/silverlight/downloads.aspx"><strong>Silverlight 1.1 Alpha September Refresh</strong></a>和<a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=B52AEB39-1F10-49A6-85FC-A0A19CAC99AF&amp;displaylang=en"><strong>Microsoft Silverlight Tools Alpha for Visual Studio 2008<br />
</strong></a>silverlight 2.0的开发不能在visual studio 2005中进行，需要注意安装silverliht 1.1 Alpha Refresh前如果你安装了silverlight 1.0 runtime，请一定要先卸载掉。<br />
<br />
更多资源请看<br />
&nbsp;&nbsp; <font face="Verdana">http://www.microsoft.com/silverlight/install.aspx#0_0<br />
&nbsp;&nbsp; <a href="http://www.silverlight.net">http://www.silverlight.net</a></font><br />
&nbsp;&nbsp; <a href="http://www.silverlight.cn/">http://www.silverlight.cn</a><br />
<img src ="http://www.cnblogs.com/shore/aggbug/1051939.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41820/" target="_blank">[新闻]Visual Studio 2008 SDK 1.1 发布</a>]]></description></item><item><title>visual studio 2008开发windows mobile应用程序之环境篇</title><link>http://www.cnblogs.com/shore/archive/2008/01/24/1051364.html</link><dc:creator>shore</dc:creator><author>shore</author><pubDate>Thu, 24 Jan 2008 04:44:00 GMT</pubDate><guid>http://www.cnblogs.com/shore/archive/2008/01/24/1051364.html</guid><wfw:comment>http://www.cnblogs.com/shore/comments/1051364.html</wfw:comment><comments>http://www.cnblogs.com/shore/archive/2008/01/24/1051364.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/shore/comments/commentRss/1051364.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/shore/services/trackbacks/1051364.html</trackback:ping><description><![CDATA[visual studio 2008的smart device开发与visual studio 2005的在新建工程时稍有不同，刚开始我还以为我的安装环境出了问题，呵呵。<br />
visual studio 2008默认安装后可以开发pocket pc 2003和windows ce的应用程序，如果要开发mobile程序也还需要安装windows mobile的sdk。Windows Mobile 6.0 SDK可以从这里<a href="http://www.microsoft.com/downloads/details.aspx?familyid=06111A3A-A651-4745-88EF-3D48091A390B&amp;displaylang=en">下载</a>&nbsp;<br />
启动visual studio 2008 IDE选择新建项目中的smart device，只有一个smart device project模板，呵呵，如果是vs2005这里有些不同，如果安装了windows mobile sdk，还会列出 mobile for smartphone，mobile for pocket pc的模板，不过不要紧，选择这个模板点OK，你就能看到变化了<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/shore/vs1.JPG" border="0" /><br />
点OK<br />
<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/shore/vs2.JPG" border="0" /><br />
可以选择不同的目标平台，如果你还安装了windows mobile 6.0 sdk，你还可以选择到windows mobile 6.0 smartphone(pocket) sdk
<img src ="http://www.cnblogs.com/shore/aggbug/1051364.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41820/" target="_blank">[新闻]Visual Studio 2008 SDK 1.1 发布</a>]]></description></item><item><title>linq to sql对存储过程和自定义sql的支持</title><link>http://www.cnblogs.com/shore/archive/2008/01/11/1035481.html</link><dc:creator>shore</dc:creator><author>shore</author><pubDate>Fri, 11 Jan 2008 08:47:00 GMT</pubDate><guid>http://www.cnblogs.com/shore/archive/2008/01/11/1035481.html</guid><wfw:comment>http://www.cnblogs.com/shore/comments/1035481.html</wfw:comment><comments>http://www.cnblogs.com/shore/archive/2008/01/11/1035481.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/shore/comments/commentRss/1035481.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/shore/services/trackbacks/1035481.html</trackback:ping><description><![CDATA[这是一些关于linq to sql零散的知识点，如果你要系统的学习linq to sql的知识，请看<a href="http://weblogs.asp.net/scottgu/default.aspx">ScottGu的博客</a><br />
<li><a href="http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx" target="_blank">Part 1: Introduction to LINQ to SQL</a>
<li><a href="http://weblogs.asp.net/scottgu/archive/2007/05/29/linq-to-sql-part-2-defining-our-data-model-classes.aspx" target="_blank">Part 2: Defining our Data Model Classes</a>
<li><a href="http://weblogs.asp.net/scottgu/archive/2007/06/29/linq-to-sql-part-3-querying-our-database.aspx" target="_blank">Part 3: Querying our Database</a>
<li><a href="http://weblogs.asp.net/scottgu/archive/2007/07/11/linq-to-sql-part-4-updating-our-database.aspx" target="_blank">Part 4: Updating our Database</a>
<li><a href="http://weblogs.asp.net/scottgu/archive/2007/07/16/linq-to-sql-part-5-binding-ui-using-the-asp-linqdatasource-control.aspx" target="_blank">Part 5: Binding UI using the ASP:LinqDataSource Control</a>
<li><a href="http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx" target="_blank">Part 6: Retrieving Data Using Stored Procedures</a>
<li><a href="http://weblogs.asp.net/scottgu/archive/2007/08/23/linq-to-sql-part-7-updating-our-database-using-stored-procedures.aspx" target="_blank">Part 7: Updating our Database using Stored Procedures</a></li>
<p>......<br />
linq to sql默认的CURD行为是linq表达式，如获取数据<br />
NorthwindDataContext northwind = new NorthwindDataContext();<br />
var product = from p in northwind.Products<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where p.CategoryID == 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select p;<br />
linq表达式会在运行时动态生成sql语句。<br />
linq to sql也对存储过程和自定义sql提供支持<br />
一、sp<br />
拖一个已写好的存储过程到设计面板的右边，linq to sql自动为我们生成与存储过程有相同名字的一个方面，这样我们可通过NorthwindDataContext实例调用，调用存储过程转化成调用一个实例方法了，太简单了。<br />
<img src="http://www.scottgu.com/blogposts/linqsproc1/step11.jpg" border="0"  alt="" /><br />
存储过程的返回值是一个自动生成的新的数据类型，命名规则是存储过程名+Result，当你拖动sp到设计器左边指定数据类型中，sp生成的方法的返回值就是这种类型的集合。返回结果集同样支持linq to sql的修改和删除操作。<br />
对于插入更新删除对sp的支持是这样的<br />
<img src="http://www.scottgu.com/blogposts/linqtosql7/step12.jpg" border="0"  alt="" /><br />
<img src="http://www.scottgu.com/blogposts/linqtosql7/step14.jpg" border="0"  alt="" /><br />
二、自定义sql<br />
<img src="http://www.scottgu.com/blogposts/linq8/step5.jpg" border="0"  alt="" /><br />
NorthwindDataContext内置的ExecuteQuery提供了对查询的自定义sql的支持，你可像上面一样写查询sql，也可以返回自定义的对象。<br />
返回的结果集同样适用于linq to sql对对象的修改和删除操作<br />
<img src="http://www.scottgu.com/blogposts/linq8/step6.jpg" border="0"  alt="" /><br />
对于修改和删除的自定义sql，用ExecuteCommand来执行<br />
<img src="http://www.scottgu.com/blogposts/linq8/step10.jpg" border="0"  alt="" /><br />
<br />
不管是linq to sql表达式，还是sp，还是自定义sql，都对对象的更新，删除和规则验证有同样支持。</p>
<img src ="http://www.cnblogs.com/shore/aggbug/1035481.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41821/" target="_blank">[新闻]死敌VMware变身微软认证计划新成员</a>]]></description></item><item><title>VS2008的Linq to sql调试器插件</title><link>http://www.cnblogs.com/shore/archive/2008/01/11/1035243.html</link><dc:creator>shore</dc:creator><author>shore</author><pubDate>Fri, 11 Jan 2008 06:30:00 GMT</pubDate><guid>http://www.cnblogs.com/shore/archive/2008/01/11/1035243.html</guid><wfw:comment>http://www.cnblogs.com/shore/comments/1035243.html</wfw:comment><comments>http://www.cnblogs.com/shore/archive/2008/01/11/1035243.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/shore/comments/commentRss/1035243.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/shore/services/trackbacks/1035243.html</trackback:ping><description><![CDATA[虽然Visual studio 2008提供了对linq表达式在运行时显示动态生成的sql语句，但sql中带有很多格式化的字符串，很不方便。<br />
The LINQ to SQL Debug Visualizer是这样一个工具，专为visual studio 2008下查看linq 表达式生成的原生sql提供方便，并可以进行预执行可看sql执行的结果。<br />
它不是vs2008自带的功能，所以你需要从这里<a href="http://www.scottgu.com/blogposts/linqquery/SqlServerQueryVisualizer.zip">下载 (一个包含源代码的zip包)它 <br />
</a>然后解压后找到bin\debug\<font face="Verdana">SqlServerQueryVisualizer.dll</font>文件，copy到<font face="Verdana">C:\Program Files\Microsoft Visual Studio 9.0\Common7\Packages\Debugger\Visualizers<br />
重新打开vs2008 的IDE，进入调试状态看一下是不是像</font>下图这样酷。<br />
<img src="http://www.scottgu.com/blogposts/linqtosql3/step4.jpg" border="0"  alt="" /><br />
点击放大镜样的图标，可以看到<br />
<img src="http://www.scottgu.com/blogposts/linqtosql3/step5.jpg" border="0"  alt="" /><br />
是不很清楚呀，还一个execute按钮，你注意到了吗，点击execute后<br />
<img src="http://www.scottgu.com/blogposts/linqtosql3/step6.jpg" border="0"  alt="" /><br />
呵呵，就像在数据库的查询分析器中看到的结果一样。<br />
<img src ="http://www.cnblogs.com/shore/aggbug/1035243.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41821/" target="_blank">[新闻]死敌VMware变身微软认证计划新成员</a>]]></description></item><item><title>linq to sql在新增和修改时的验证实现</title><link>http://www.cnblogs.com/shore/archive/2008/01/10/1034089.html</link><dc:creator>shore</dc:creator><author>shore</author><pubDate>Thu, 10 Jan 2008 10:31:00 GMT</pubDate><guid>http://www.cnblogs.com/shore/archive/2008/01/10/1034089.html</guid><wfw:comment>http://www.cnblogs.com/shore/comments/1034089.html</wfw:comment><comments>http://www.cnblogs.com/shore/archive/2008/01/10/1034089.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/shore/comments/commentRss/1034089.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/shore/services/trackbacks/1034089.html</trackback:ping><description><![CDATA[<p dir="ltr">linq to sql为我们提供了集成运行时的ORM支持，非常方便实现CURD操作，并且提供了很好的扩展框架，验证规则的插入就是一个很好的例子。<br />
下面以往northwind数据库的product表插入一条记录为例来介绍linq to sql的验证逻辑吧<br />
通常我们是这样插入一条product记录的<br />
<font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NorthwindDataConextDataContext db = new NorthwindDataConextDataContext();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Product p1 = new Product();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p1.ProductName = "ghb11111";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p1.CategoryID = 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p1.UnitPrice = 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p1.UnitsInStock = 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; db.Products.InsertOnSubmit(p1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; db.SubmitChanges();</font><br />
假如我们有如下新增需要，只允许所有产品名称开头为1的产品才可以添加到数据库当中，这个规则是我们自己的，自然linq to sql的代码是没有这么做，那么我们怎么才能在改动最少的情况下增加这样的验证规则呢，你可能说在上面倒数第2行代码之前插入一个产品名称是包含开头字母为1的判断就行，如果不包含则不执行倒数两行代码，否则就执行，如果这样那假如我们有100个地方有插入产品的代码，那这100处都要改了，其实linq to sql已经为我们想到了，有两种方式可以让我们很容易实现。<br />
一、添加NorthwindDataConextDataContext局部类<br />
<font face="Verdana">partial class NorthwindDataConextDataContext<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; partial void InsertProduct(Product instance)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //to do valid rule<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!instance.ProductName.StartsWith("1"))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("开头未包含1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red">this.ExecuteDynamicInsert(instance);</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
</font>这样当执行db.SubmitChanges();InsertProduct方法自动被调用，不过你要记得红色行的那一句不能少。<br />
二、添加product局部类<br />
partial class product<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //添加局部方法<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Verdana">partial void OnValidate(System.Data.Linq.ChangeAction action)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!ProductName.StartsWith("1"))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("开头未包含1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font><br />
}<br />
这样当执行db.SubmitChanges();OnValidate方法自动被调用<br />
<br />
局部方法在vs2008中提供了完全的智能感应，你不用担心到底是onValidate还是OnValidate，就像以前的override一样通过智能感应选择就行了，呵。不得不佩服ms的强憾</p>
<img src ="http://www.cnblogs.com/shore/aggbug/1034089.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41819/" target="_blank">[新闻]英特尔雅虎开发网络计算机频道</a>]]></description></item><item><title>LINQ to SQL的CURD操作</title><link>http://www.cnblogs.com/shore/archive/2008/01/10/1033912.html</link><dc:creator>shore</dc:creator><author>shore</author><pubDate>Thu, 10 Jan 2008 08:50:00 GMT</pubDate><guid>http://www.cnblogs.com/shore/archive/2008/01/10/1033912.html</guid><wfw:comment>http://www.cnblogs.com/shore/comments/1033912.html</wfw:comment><comments>http://www.cnblogs.com/shore/archive/2008/01/10/1033912.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/shore/comments/commentRss/1033912.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/shore/services/trackbacks/1033912.html</trackback:ping><description><![CDATA[<p dir="ltr" style="margin-right: 0px">Scottgu在Visual studio 2008还是beta2的时候写过一系统关于linq to sql的文章，请看scottgu的中文博客<a href="http://blog.joycode.com/scottgu">http://blog.joycode.com/scottgu</a>，博客园的hanxianlong对它进行了翻译，最重要是有中英文对照，请看<font face="Verdana"><a href="http://www.cnblogs.com/hanxianlong/category/118843.html">http://www.cnblogs.com/hanxianlong/category/118843.html</a><br />
在vs2008 beta2时，scottgu提到linq to sql支持的新增是这样的<br />
NorthwindDataContext db = new NorthwindDataContext();<br />
Product p = new Product();<br />
p.Name="p1";<br />
p.CategoryID=1;<br />
<span style="color: red">db.Products.Add(p);<br />
</span>db.SubmitChange();<br />
<br />
删除<br />
Product po=db.Products.Single(p=&gt;p.Name=="p1");<br />
<span style="color: red">db.Products.RemoveAll(po);<br />
</span>db.SubmitChange();<br />
注意红色行，正式版已经不是这样了，下面是正确的方式<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Verdana">Product p1 = new Product();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p1.ProductName = "ghb";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p1.CategoryID = 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p1.UnitPrice = 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p1.UnitsInStock = 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red">db.Products.InsertOnSubmit(p1);<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; db.SubmitChanges();</font></p>
<p dir="ltr" style="margin-right: 0px"><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Product p3 = db.Products.Single(p =&gt; p.ProductName == "ghb");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red">db.Products.DeleteOnSubmit(p3);<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; db.SubmitChanges();<br />
你也可以这样新增<br />
<font face="Verdana">Category c1 = db.Categories.Single(p =&gt; p.CategoryID == 1);<br />
Product p1 = new Product();<br />
p1.ProductName = "ghb";<br />
p1.UnitPrice = 1;<br />
p1.UnitsInStock = 1;<br />
c1.Products.Add(p1);<br />
db.SubmitChanges();</font><br />
但是如果你像下面这样做删除则可能得到的并不是你想要的，<br />
<font face="Verdana">Category c1 = db.Categories.Single(p =&gt; p.CategoryID == 1);<br />
Product p3 = db.Products.Single(p =&gt; p.ProductName == "ghb");<br />
c1.Products.Remove(p3);<br />
db.SubmitChanges();<br />
</font>因为这样，其实对于Product对象从Category集合中remove是做一个update操作，只是把product对象的categoryid置为null，而不会真实的删除这个product从数据库中。<br />
</font></p>
</font>
<img src ="http://www.cnblogs.com/shore/aggbug/1033912.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41819/" target="_blank">[新闻]英特尔雅虎开发网络计算机频道</a>]]></description></item><item><title>windows下php环境配置篇</title><link>http://www.cnblogs.com/shore/archive/2008/01/07/1028808.html</link><dc:creator>shore</dc:creator><author>shore</author><pubDate>Mon, 07 Jan 2008 04:50:00 GMT</pubDate><guid>http://www.cnblogs.com/shore/archive/2008/01/07/1028808.html</guid><wfw:comment>http://www.cnblogs.com/shore/comments/1028808.html</wfw:comment><comments>http://www.cnblogs.com/shore/archive/2008/01/07/1028808.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/shore/comments/commentRss/1028808.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/shore/services/trackbacks/1028808.html</trackback:ping><description><![CDATA[<p>php还是那么的流行，如此多的开源程序让我这个从asp到asp.net的开发者不得不花点时间关注一下它，不算晚，代码也不复杂，但要在windows平台上让php程序运行起来确不那么容易。LAMP=linux+apache+mysql+php是流行的服务器配置，windows平台用来开发确很方便。<br />
下面来讲一讲怎么来讲一个php程序在windows下跑起来。<br />
一、下载<br />
<font size="3"><font color="#3366cc"><font face="Times New Roman ">apache_2.0.55-win32-x86-no_ssl.msi&nbsp;&nbsp;&nbsp;&nbsp; </font></font></font><a href="http://www.apache.org/dyn/closer.cgi/httpd/binaries/win32/">http://www.apache.org/dyn/closer.cgi/httpd/binaries/win32/</a><br />
<font size="3"><font color="#3366cc"><font face="Times New Roman ">mysql-5.0.24-win32.zip</font></font></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.mysql.com">http://www.mysql.com<br />
</a><font size="3"><font color="#3366cc"><font face="Times New Roman ">php-5.1.6-Win32.zip</font></font></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.php.net">http://www.php.net</a>选择zip包，不要安装版<br />
<font size="3"><font color="#3366cc"><font face="Times New Roman ">可选&nbsp;phpmyadmin</font></font></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.phpmyadmin.net">http://www.phpmyadmin.net</a>&nbsp;&nbsp;&nbsp;<br />
二、安装<br />
&nbsp; 1、Apache的程序安装相对来说要较为的简单一些,我们从网站下来的是一个Windows下的安装程序,我们可以直接双击运行,这样我们就便利Apache在我们的<a class="bluekey" href="http://pc.yesky.com/" target="_blank">电脑</a>上安下家来了。<br />
<br />
　　2、我们在这里要注意的就是在下载PHP时一定要下载那个zip包的,而不要下载Installer的.将我们下载下来的PHP包解压到C盘下的根目录下,并将解压出来的文件夹改名为php。<br />
三、配置<br />
1、最好是无论使用何种接口（CGI 或者 SAPI）都确保 php5ts.dll 可用，因此必须将此文件放到 Windows 路径中。最好的位置是 Windows 的 system 目录： <br />
<br />
<table bordercolor="#cccccc" width="90%" align="center" bgcolor="#e3e3e3" border="1">
    <tbody>
        <tr>
            <td>c:\windows\system for Windows 9x/ME <br />
            c:\winnt\system32 for Windows NT/2000 或者 c:\winnt40\system32 for Windows NT/2000 <a class="bluekey" href="http://product.yesky.com/catalog/850/" target="_blank">服务器</a>版 <br />
            c:\windows\system32 for Windows XP </td>
        </tr>
    </tbody>
</table>
<br />
　　2、下一步是设定有效的 PHP 配置文件，php.ini。压缩包中包括两个 ini 文件，php.ini-dist 和 php.ini-recommended。建议使用 php.ini-recommended，因为此文件对默认设置作了性能和安全上的优化。<br />
<br />
　　将选择的 ini 文件拷贝到 PHP 能够找到的目录下并改名为 php.ini。PHP 默认在 Windows 目录下搜索 php.ini： <br />
<br />
　　3 在 Windows 9x/ME/XP 下将选择的 ini 文件拷贝到 %WINDIR%，通常为 c:\windows。 <br />
<br />
　　在 Windows NT/2000 下将选择的 ini 文件拷贝到 %WINDIR% 或 %SYSTEMROOT% 下，通常为 c:\winnt 或 c:\winnt40 对应于服务器版本。 <br />
<br />
　　4 Apache中PHP的设置<br />
<br />
　　有两种方法使得 PHP 工作在 Windows 下的 Apache。一是使用 CGI 二进制文件，另一是使用 Apache 模块 DLL。无论那种方法，您首先必须停止 Apache 服务器，然后编辑 httpd.conf，以配置 Apache 和 PHP 协同工作。 <br />
<br />
　　如果我们要使用CGI二进制文件,那么我们要将如下指令插入到 Apache 的 httpd.conf 配置文件中，以设置 CGI 二进制文件：<br />
<br />
　　PHP 以 CGI 方式安装到 Apache 2.0:<br />
<br />
<table bordercolor="#cccccc" width="90%" align="center" bgcolor="#e3e3e3" border="1">
    <tbody>
        <tr>
            <td>ScriptAlias /php/ "c:/php/"<br />
            AddType application/x-httpd-php .php<br />
            Action application/x-httpd-php "/php/php.exe"</td>
        </tr>
    </tbody>
</table>
<br />
　　如果我们想把 PHP 作为 Apache 2.0 的模块，那么就一定要移动 php4ts.dll 到 winnt/system32（Windows NT/2000）或 windows/system32（Windows XP），覆盖原有文件（如果有的话），对于 PHP 5，这个文件是 php5ts.dll。然后我们要插入如下两行到 httpd.conf 中，以使我们的 PHP 作为 Apache 的 PHP-Module 安装：<br />
<br />
　　PHP 以模块方式安装到 Apache 2.0:<br />
<br />
<table bordercolor="#cccccc" width="90%" align="center" bgcolor="#e3e3e3" border="1">
    <tbody>
        <tr>
            <td>; For PHP 4 do something like this:<br />
            LoadModule php4_module "c:/php/php4apache2.dll"<br />
            AddType application/x-httpd-php .php<br />
            <br />
            ; For PHP 5 do something like this:<br />
            LoadModule php5_module "c:/php/php5apache2.dll"<br />
            AddType application/x-httpd-php .php</td>
        </tr>
    </tbody>
</table>
<br />
　　经过这样的配置以后,我们就安装好了我们的PHP和Apache服务器了。我们可以简单的测试一下:<br />
四、测试<br />
　　1、测试Apache:<br />
<br />
　　我们打开浏览器,在地址栏中输入localhost,如果可以出现Apache页面,则说明我们的Apache可以正常工作了。<br />
<br />
　　2、测试PHP设置:<br />
<br />
　　我们可以简单的编写一个PHP页面,我们可以用文本编辑器,输入下面的代码:<br />
<br />
<table bordercolor="#cccccc" width="90%" align="center" bgcolor="#e3e3e3" border="1">
    <tbody>
        <tr>
            <td>＜html＞<br />
            ＜head＞<br />
            ＜title＞<br />
            hello<br />
            ＜/title＞<br />
            ＜/head＞<br />
            ＜body＞<br />
            ＜?php echo "hello,php"; ?＞<br />
            ＜/body＞<br />
            ＜/html＞</td>
        </tr>
    </tbody>
</table>
<br />
　　然后将这个文件存为hello.php,将其放在Apache的htdocs目录中(我们也可以在http.conf文件中来更改这个目录的),然后在我们的浏览器中输入http://localhost/hello.php,如果能够正确的显示hello,php就说明我们的PHP配置是可以正常工作的。<br />
<br />
　　这样以后我们也可以来<a class="bluekey" href="http://design.yesky.com/" target="_blank">设计</a>我们的PHP站点了。<br />
<br />
ps<br />
如果你觉得上面的步骤过于复杂，你可以选择EasyPHP 到<a href="http://www.easyphp.cn/download.php">http://<span class="a">www.<strong>easyphp</strong>.cn/download.php</a></span>下载一个吧，安装apache，mysql,php,phpmyadmin都有了，呵，真方便。不过注意apache默认是80端口，这样如果你在之前安装了iis，则apache会启动不了，你可以选择把iis停止或更改apache的端口（修改安装目录\apache\httpd.conf文件，查找80改为你想要的端口）</p>
<img src ="http://www.cnblogs.com/shore/aggbug/1028808.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41818/" target="_blank">[新闻]Windows Live视频邮件9月9日开始测试</a>]]></description></item></channel></rss>