﻿<?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>博客园-学习Dot NET</title><link>http://www.cnblogs.com/hsb0307/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 06 Jul 2009 11:49:05 GMT</lastBuildDate><pubDate>Mon, 06 Jul 2009 11:49:05 GMT</pubDate><ttl>60</ttl><item><title>听说微软要收购 winrar</title><link>http://www.cnblogs.com/hsb0307/archive/2008/05/16/1200791.html</link><dc:creator>学习.NET</dc:creator><author>学习.NET</author><pubDate>Fri, 16 May 2008 07:56:00 GMT</pubDate><guid>http://www.cnblogs.com/hsb0307/archive/2008/05/16/1200791.html</guid><wfw:comment>http://www.cnblogs.com/hsb0307/comments/1200791.html</wfw:comment><comments>http://www.cnblogs.com/hsb0307/archive/2008/05/16/1200791.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hsb0307/comments/commentRss/1200791.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hsb0307/services/trackbacks/1200791.html</trackback:ping><description><![CDATA[<font face="Verdana">听说微软要收购 winrar，因为 winrar的用户太多了，干脆收购之，然后免费</font>
<img src ="http://www.cnblogs.com/hsb0307/aggbug/1200791.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48008/" target="_blank">IBM发布全球首款开源智能编译器</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>请教泛型方法重载的一个小问题</title><link>http://www.cnblogs.com/hsb0307/archive/2006/05/29/412370.html</link><dc:creator>学习.NET</dc:creator><author>学习.NET</author><pubDate>Mon, 29 May 2006 12:55:00 GMT</pubDate><guid>http://www.cnblogs.com/hsb0307/archive/2006/05/29/412370.html</guid><wfw:comment>http://www.cnblogs.com/hsb0307/comments/412370.html</wfw:comment><comments>http://www.cnblogs.com/hsb0307/archive/2006/05/29/412370.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cnblogs.com/hsb0307/comments/commentRss/412370.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hsb0307/services/trackbacks/412370.html</trackback:ping><description><![CDATA[<font size="2">我用类似PetShop的方式实现三层架构,数据访问层有一个基类DataAccessObjectBase，实现思路如下：<br><br>1、两个实体类OrderInfo和OrderDatailInfo。(Model,作为在各层之间传递的数据对象)<br>2、数据访问层的基类：<br>public abstract class DataAccessObjectBase&lt;TDomainObject&gt; where TDomainObject : new()<br>{<br>&nbsp;&nbsp;&nbsp; public string ObjectId;<br>&nbsp;&nbsp;&nbsp; public string ParentObjectId;<br>&nbsp;&nbsp;&nbsp; public string ChildObjectId;<br><br>&nbsp;&nbsp;&nbsp; #region Common StoredProcedure Name List<br><br>&nbsp;&nbsp;&nbsp; public string SelectByIdStoredProcedureName;<br><br>&nbsp;&nbsp;&nbsp; public string SelectDetailObjectStoredProcedureName;<br>&nbsp;&nbsp;&nbsp; public string SelectMasterObjectStoredProcedureName;<br>&nbsp;&nbsp;&nbsp; #endregion<br><br>public abstract void LoadDomainObjectInfo(TDomainObject domainObject, System.Data.IDataReader dr);<br>public TDomainObject SelectById(System.Guid id)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Database db = DatabaseFactory.CreateDatabase();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DbCommand cmd = db.GetStoredProcCommand(SelectByIdStoredProcedureName);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataAccessHelper.PopulateIdParamter(db, cmd, id);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TDomainObject domainObject = new TDomainObject();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<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; using (IDataReader dr = db.ExecuteReader(cmd))<br>&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp; if (dr.Read())<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LoadDomainObjectInfo(domainObject, dr);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (InvalidOperationException ex)<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; //if (ExceptionPolicy.HandleException(ex, SR.ExceptionReplacePolicy)) throw;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (DataException ex)<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; //if (ExceptionPolicy.HandleException(ex, SR.ExceptionWrapPolicy)) throw;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return domainObject;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>public virtual void LoadDetailObjectInfo&lt;TDetailObject&gt;(TDetailObject detailObject, System.Data.IDataReader dr)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("The method or operation is not implemented.");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 返回当前实体类的子对象，如订单类，则返回的是订单的订单明细<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;typeparam name="TDetailObject"&gt;&lt;/typeparam&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="id"&gt;&lt;/param&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;&lt;/returns&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public List&lt;TDetailObject&gt; SelectDetailObject&lt;TDetailObject&gt;(System.Guid id) where TDetailObject : new()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( String.IsNullOrEmpty(SelectDetailObjectStoredProcedureName ) ) return null;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Database db = DatabaseFactory.CreateDatabase();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DbCommand cmd = db.GetStoredProcCommand(SelectDetailObjectStoredProcedureName);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataAccessHelper.PopulateIdParamter(db, cmd, id, ObjectId);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List&lt;TDetailObject&gt; domainObjectList = new List&lt;TDetailObject&gt;();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<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; using (IDataReader dr = db.ExecuteReader(cmd))<br>&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp; while (dr.Read())<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TDetailObject detailObject = new TDetailObject();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LoadDetailObjectInfo&lt;TDetailObject&gt;((TDetailObject)detailObject, dr);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; domainObjectList.Add(detailObject);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (InvalidOperationException ex)<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; //if (ExceptionPolicy.HandleException(ex, SR.ExceptionReplacePolicy)) throw;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (DataException ex)<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; //if (ExceptionPolicy.HandleException(ex, SR.ExceptionWrapPolicy)) throw;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return domainObjectList;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>订单数据访问类：继承于DataAccessObjectBase，<br>重载了抽象的和虚拟的方法，分别如下：<br>//////////////////////////////////<br>public override void LoadDomainObjectInfo(OrderInfo order, System.Data.IDataReader dr)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LoadAdminObjectInfo.LoadOrderInfo(order, dr);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br><br>// 请教：这个方法应该如何重载？&lt;=====================<br>public override void LoadDetailObjectInfo&lt;TDetailObject&gt;(TDetailObject detailObject, IDataReader dr)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LoadAdminObjectInfo.LoadOrderItemInfo(detailObject, dr);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>其中LoadAdminObjectInfo，是一个辅助类，有两个方法如下：<br>public static void LoadOrderInfo(OrderInfo order, System.Data.IDataReader dr)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; order.OrderId = (System.Guid)dr["OrderId"];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; order.SequenceNumber = (System.Int32)dr["SequenceNumber"];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; order.Name = (System.String)dr["Name"];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;public static void LoadOrderItemInfo(OrderItemInfo orderItem, System.Data.IDataReader dr)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orderItem.OrderItemId = (System.Guid)dr["OrderItemId"];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orderItem.OrderId = (System.Guid)dr["OrderId"];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orderItem.LocalId = (System.String)dr["LocalId"];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>对于具体的数据访问对象，LoadDetailObjectInfo应该如何重载？ <br></font><img src ="http://www.cnblogs.com/hsb0307/aggbug/412370.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48007/" target="_blank">IE颓势不减 微软下月公布最新浏览器架构</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>用guid类型的字段作主键，用char(36)好还是用uniqueidentifier好？</title><link>http://www.cnblogs.com/hsb0307/archive/2006/04/27/386136.html</link><dc:creator>学习.NET</dc:creator><author>学习.NET</author><pubDate>Wed, 26 Apr 2006 21:19:00 GMT</pubDate><guid>http://www.cnblogs.com/hsb0307/archive/2006/04/27/386136.html</guid><wfw:comment>http://www.cnblogs.com/hsb0307/comments/386136.html</wfw:comment><comments>http://www.cnblogs.com/hsb0307/archive/2006/04/27/386136.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/hsb0307/comments/commentRss/386136.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hsb0307/services/trackbacks/386136.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 10pt">请教各位：<br>用guid类型的字段作主键，用char(36)好还是用uniqueidentifier好？<br>为什么？<br><br>个人认为代码几乎没有差别, 可能对移植稍有帮助.&nbsp; 请有经验的朋友指教</span>
<img src ="http://www.cnblogs.com/hsb0307/aggbug/386136.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48002/" target="_blank">竞争日趋激烈 微软欲借 Windows 7 扭转战局</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>批量插入与更新</title><link>http://www.cnblogs.com/hsb0307/archive/2006/04/21/381719.html</link><dc:creator>学习.NET</dc:creator><author>学习.NET</author><pubDate>Fri, 21 Apr 2006 13:29:00 GMT</pubDate><guid>http://www.cnblogs.com/hsb0307/archive/2006/04/21/381719.html</guid><wfw:comment>http://www.cnblogs.com/hsb0307/comments/381719.html</wfw:comment><comments>http://www.cnblogs.com/hsb0307/archive/2006/04/21/381719.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cnblogs.com/hsb0307/comments/commentRss/381719.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hsb0307/services/trackbacks/381719.html</trackback:ping><description><![CDATA[近来学习什么是三层架构，也就是这个图了，<a href="http://msdn.microsoft.com/library/en-us/dnbda/html/f00aa01.gif" target=_blank><span style="FONT-SIZE: 10pt">http://msdn.microsoft.com/library/en-us/dnbda/html/f00aa01.gif</span></a><span style="FONT-SIZE: 10pt"> <br></span><a href="http://msdn.microsoft.com/library/en-us/dnbda/html/distapp.asp" target=_blank>http://msdn.microsoft.com/library/en-us/dnbda/html/distapp.asp</a> <br>Model层，用贫血的实体， <br>[Serializable] <br><span style="FONT-SIZE: 8pt">public class CustomerInfo <br>{ <br>&nbsp;&nbsp;&nbsp;&nbsp;#region Private Variables <br>&nbsp;&nbsp;&nbsp;&nbsp;private System.Guid _customerId; <br>&nbsp;&nbsp;&nbsp;&nbsp;private System.String _name; <br>&nbsp;&nbsp;&nbsp;&nbsp;#endregion <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;#region Constructors&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;#endregion <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;#region Properties <br>&nbsp;&nbsp;&nbsp;&nbsp;public System.Guid CustomerId <br>&nbsp;&nbsp;&nbsp;&nbsp;{ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get {return _customerId;} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set {_customerId = value;} <br>&nbsp;&nbsp;&nbsp;&nbsp;} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;public System.String Name <br>&nbsp;&nbsp;&nbsp;&nbsp;{ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get {return _name;} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set {_name = value;} <br>&nbsp;&nbsp;&nbsp;&nbsp;} <br>&nbsp;&nbsp;&nbsp;&nbsp;#endregion <br>} <br></span>数据访问层，使用了EL： <br>public class CustomerDataServices : IDataServices <br>{ <br>&nbsp;&nbsp;&nbsp;&nbsp;#region Private Field <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;#endregion <br>&nbsp;&nbsp;&nbsp;&nbsp;public CustomerInfoCollection SelectCustomersByNameInexact(System.String name) <br>&nbsp;&nbsp;&nbsp;&nbsp;{ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Database db = DatabaseFactory.CreateDatabase(); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DbCommand cmd = db.GetStoredProcCommand(SR.SelectCustomersByNameInexact); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(cmd, "Name", DbType.String, name); <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;CustomerInfo&gt; customers = new List&lt;CustomerInfo&gt;(); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;using(IDataReader dr = db.ExecuteReader(cmd)) <br>&nbsp;&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;&nbsp;while(dr.Read()) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CustomerInfo customer = new CustomerInfo(); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;customer.CustomerId = (System.Guid)dr["CustomerId"]; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;customer.Name = (System.String)dr["Name"]; <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;customers.Add(customer); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;dr.Close(); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(InvalidOperationException ex)//catch(DataException ex) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.... <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return customers.Count &gt; 0 ? customers : null; <br>&nbsp;&nbsp;&nbsp;&nbsp;} <br><br>&nbsp;&nbsp;&nbsp;&nbsp;public bool InsertCustomer(System.Guid customerId, System.String name) <br>&nbsp;&nbsp;&nbsp;&nbsp;{ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Database db = DatabaseFactory.CreateDatabase(); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DbCommand cmd = db.GetStoredProcCommand(SR.InsertCustomer); <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd = db.GetStoredProcCommandWrapper(SR.InsertCustomer); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(cmd, "CustomerId", DbType.Guid, customerId); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(cmd, "Name", DbType.String, name); <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool ret = false; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.ExecuteNonQuery(cmd); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret = true; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(DataException ex) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...... <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return ret; <br>&nbsp;&nbsp;&nbsp;&nbsp;} <br>} <br><br>突然发现，在添加一条订单时，要添加多条订单项，批量添加和更新应该如何做呢？ <br>我原来的数据操作都是用的存储过程。 <br>方法一：循环调用 插入一条记录 的方法。我一次就添加30-300条记录，感觉这样不是很好。 <br>方法二：针对不同的数据库分别建立SQL文本的常量文件，就是如同Pet Shop那样将SQL文本放到代码文件中，专门建立一个只放SQL文本的常量文件（static readonly）。根据配置利用反射加载SQL文本，在批量添加和更新时，在循环语句中拼接SQL文本，添加命令参数，也是如同Pet Shop那样。这个方法感觉麻烦。 <br>方法三、针对不同数据库分别定义一个类似DbCommandBuilder的类，从而得到批量添加和更新的Command。没有仔细考虑这个办法的具体实现方式。<br>方法四、将批量更新和添加的实体的各个字段用循环一个字符串作为参数传给存储过程，在存储过程中解析这个字符串，拼接SQL文本。这个方法显然有sql注入的危险。 <br>我到底应该用什么更好的方法？ 大家说说在遇到类似问题时，是如何处理的，谢谢。<br>
<img src ="http://www.cnblogs.com/hsb0307/aggbug/381719.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48001/" target="_blank">上海电信计划2012年80%用户实现100M带宽</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>批判工厂方法模式</title><link>http://www.cnblogs.com/hsb0307/archive/2006/04/21/381693.html</link><dc:creator>学习.NET</dc:creator><author>学习.NET</author><pubDate>Fri, 21 Apr 2006 13:04:00 GMT</pubDate><guid>http://www.cnblogs.com/hsb0307/archive/2006/04/21/381693.html</guid><wfw:comment>http://www.cnblogs.com/hsb0307/comments/381693.html</wfw:comment><comments>http://www.cnblogs.com/hsb0307/archive/2006/04/21/381693.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.cnblogs.com/hsb0307/comments/commentRss/381693.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hsb0307/services/trackbacks/381693.html</trackback:ping><description><![CDATA[<p><span style="FONT-SIZE: 10pt">之所以取这个标题，纯粹是为了吸引眼球,:)</span></p>
<p><span style="FONT-SIZE: 10pt">本人没用过patterns，没有实践经验，所以特来问一个问题。 <br>工厂方法模式中，有两个类体系，一个是产品类体系，如IProduct、ConcreteProductA、ConcreteProductB、ConcreteProductC，具体产品类全部实现IProduct接口。另一个是工厂类体系，如IFactory、ConcreteFactoryA、ConcreteFactoryB、ConcreteFactoryC，对应的具体工厂类用于&#8220;生产&#8221;对应的具体产品类。 <br><br>在使用时我们一般这样写： <br>IFactory f = new ConcreteFactoryA(); <br>IProduct p = f.CreateProduct(); <br>p.ExecuteFunction();// 客户代码中使用IProduct所提供的功能。 <br><br>如果出现了新品种的产品，我们就先建立新产品及其对应的工厂类，然后这样修改使用代码： <br>IFactory f = new ConcreteFactoryD();// 仅改这一个地方 <br>IProduct p = f.CreateProduct(); <br>p.ExecuteFunction(); <br><br>客户端代码虽然不再对具体产品类产生依赖了，但却对具体工厂类产生依赖了。 <br><br>假设我们不用工厂方法模式，则这样写代码： <br>IProduct p = ConcreteProductA(); <br>p.ExecuteFunction(); <br>显然，不用工厂方法模式的代码少了一行。请教各位，工厂方法模式给我带来的好处什么？难道是多写了一行代码？ <br><br>如果让 客户端代码 对 具体产品类和具体工厂类 均不产生依赖，而是依赖于抽象产品类和抽象工厂类，这样在更换具体产品类时客户代码就不用修改。如果语言平台提供了反射功能，可以将客户代码的修改转换为配置文件的修改： <br>IFactory f = (IFactory)Assembly.Load(&#8220;AssemblyNameFromConfig&#8221;).CreateInstance(&#8220;ConcreteFactoryA&#8221;); <br>IProduct p = f.CreateProduct(); <br>p.ExecuteFunction();// 客户代码中使用IProduct所提供的功能。 <br><br>假设我们不用工厂方法模式，则这样写代码： <br>IProduct p = (IProduct)Assembly.Load(&#8220;AssemblyNameFromConfig&#8221;).CreateInstance(&#8220;ConcreteFactoryA&#8221;); <br>p.ExecuteFunction(); // 这种用法是不是就是provider model？<br>显然，用工厂方法模式的代码还是多写了一行，请教各位，难道这是工厂方法模式给我带来的好处？这里是不是基于抽象编程即可？我感觉自己没有找到真正使用工厂方法模式的场景，请大家帮我找一找。</span></p>
<img src ="http://www.cnblogs.com/hsb0307/aggbug/381693.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48001/" target="_blank">上海电信计划2012年80%用户实现100M带宽</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>李斯与赵高</title><link>http://www.cnblogs.com/hsb0307/archive/2005/01/22/95870.html</link><dc:creator>学习.NET</dc:creator><author>学习.NET</author><pubDate>Sat, 22 Jan 2005 13:56:00 GMT</pubDate><guid>http://www.cnblogs.com/hsb0307/archive/2005/01/22/95870.html</guid><wfw:comment>http://www.cnblogs.com/hsb0307/comments/95870.html</wfw:comment><comments>http://www.cnblogs.com/hsb0307/archive/2005/01/22/95870.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hsb0307/comments/commentRss/95870.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hsb0307/services/trackbacks/95870.html</trackback:ping><description><![CDATA[<p>刚才看了一篇文章《<strong>腰斩李斯</strong>》，其内容如下：
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;自从陈胜、吴广起事后，各地义军此伏彼起。这时，秦二世听从郎中令赵高的建议，深居宫中，一切政事都由赵高决断。赵高与李斯有夙怨，赵高就趁机诬陷李斯想割地称王，又诬陷李斯之子三川郡守李由与义军私通。李斯想上书申辩，却被赵高扣下。赵高派人四处搜捕李斯的宗族，又对李斯严刑拷打。李斯不堪酷刑，被迫认罪，于秦二世二年（前208）八月被腰斩于咸阳，并夷灭三族。李斯死后，秦二世任命赵高为丞相，事无大小，都由赵高决断。
</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; 李斯（？-前208），战国末期楚上蔡（今河南上蔡县）人。秦代著名政治家、文学家。李斯协助秦始皇废除分封制，推行郡县制。他反对&#8220;以古非今&#8221;，提议焚书坑儒。他还按照秦始皇的命令，为统一文字、法律、货币及度量衡作出了卓越贡献。后因赵高的诬陷而被腰斩于咸阳。
<br/>
<br/>自古至今不乏赵高、李斯之辈。现在，小人当道的企业也不在少数，虽然没有像赵高这么极端，确实使一些人的命运象李斯一样，当然，没有李斯这样惨。出现了这种情况，不知企业的领导是什么水平？
<br/>管理，几乎决定了企业的一切。一本哈佛的书说，一个企业的成败70%在于管理，下岗后，在一个管理很好的企业经过一年的时间，感觉说的一点也不错。想当年，我所在的企业比华为、中兴牛很多(我们企业当时也不牛，主要是这两个企业当时还没成气候)，可现在我们企业就要倒闭，为什么？因为领导还在信任赵高之辈。
</p><img src ="http://www.cnblogs.com/hsb0307/aggbug/95870.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48000/" target="_blank">数万名网友签名抗议星际争霸2取消局域网功能</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>MSDN Magazine</title><link>http://www.cnblogs.com/hsb0307/archive/2005/01/14/92112.html</link><dc:creator>学习.NET</dc:creator><author>学习.NET</author><pubDate>Fri, 14 Jan 2005 15:36:00 GMT</pubDate><guid>http://www.cnblogs.com/hsb0307/archive/2005/01/14/92112.html</guid><wfw:comment>http://www.cnblogs.com/hsb0307/comments/92112.html</wfw:comment><comments>http://www.cnblogs.com/hsb0307/archive/2005/01/14/92112.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hsb0307/comments/commentRss/92112.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hsb0307/services/trackbacks/92112.html</trackback:ping><description><![CDATA[<p>MSDN Magazine的相关源码和电子版下载地址：
<br/><a href="http://msdn.microsoft.com/msdnmag/code02.aspx">http://msdn.microsoft.com/msdnmag/code02.aspx</a>
<br/><a href="http://msdn.microsoft.com/msdnmag/code03.aspx">http://msdn.microsoft.com/msdnmag/code03.aspx</a>
<br/><a href="http://msdn.microsoft.com/msdnmag/code04.aspx">http://msdn.microsoft.com/msdnmag/code04.aspx</a>
<br/><a href="http://msdn.microsoft.com/msdnmag/code05.aspx">http://msdn.microsoft.com/msdnmag/code05.aspx</a>
</p>
<p></p>
<p><a href="http://msdn.microsoft.com/msdnmag/backissues02.aspx">http://msdn.microsoft.com/msdnmag/backissues02.aspx</a>
<br/><a href="http://msdn.microsoft.com/msdnmag/backissues03.aspx">http://msdn.microsoft.com/msdnmag/backissues03.aspx</a>
<br/><a href="http://msdn.microsoft.com/msdnmag/backissues04.aspx">http://msdn.microsoft.com/msdnmag/backissues04.aspx</a>
<br/><a href="http://msdn.microsoft.com/msdnmag/backissues05.aspx">http://msdn.microsoft.com/msdnmag/backissues05.aspx</a>
<br/>
<br/>二月份的magazine已经有了。
</p><img src ="http://www.cnblogs.com/hsb0307/aggbug/92112.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47999/" target="_blank">Silverlight打造杰克逊纪念专题</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>微软首席架构师Anders Hejlsberg谈C#的一些东西。</title><link>http://www.cnblogs.com/hsb0307/archive/2005/01/08/88521.html</link><dc:creator>学习.NET</dc:creator><author>学习.NET</author><pubDate>Sat, 08 Jan 2005 00:17:00 GMT</pubDate><guid>http://www.cnblogs.com/hsb0307/archive/2005/01/08/88521.html</guid><wfw:comment>http://www.cnblogs.com/hsb0307/comments/88521.html</wfw:comment><comments>http://www.cnblogs.com/hsb0307/archive/2005/01/08/88521.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hsb0307/comments/commentRss/88521.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hsb0307/services/trackbacks/88521.html</trackback:ping><description><![CDATA[<p>tss上有Anders Hejlsberg谈C#的一些东西，还有Rocky Lhotka，当然是他的CSLA。</p>
<p></p>
<p><a href="http://www.theserverside.net/talks/index.tss">http://www.theserverside.net/talks/index.tss</a>
</p><img src ="http://www.cnblogs.com/hsb0307/aggbug/88521.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47998/" target="_blank">传诺基亚正在开发Android手机</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>迷惘中</title><link>http://www.cnblogs.com/hsb0307/archive/2005/01/07/88444.html</link><dc:creator>学习.NET</dc:creator><author>学习.NET</author><pubDate>Fri, 07 Jan 2005 13:39:00 GMT</pubDate><guid>http://www.cnblogs.com/hsb0307/archive/2005/01/07/88444.html</guid><wfw:comment>http://www.cnblogs.com/hsb0307/comments/88444.html</wfw:comment><comments>http://www.cnblogs.com/hsb0307/archive/2005/01/07/88444.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hsb0307/comments/commentRss/88444.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hsb0307/services/trackbacks/88444.html</trackback:ping><description><![CDATA[看了一些技术大牛的讨论，对一些框架感到迷惘中。
<br/><a href="http://www.jdon.com/jive/thread.jsp?forum=62&amp;thread=18423">http://www.jdon.com/jive/thread.jsp?forum=62&amp;thread=18423</a><img src ="http://www.cnblogs.com/hsb0307/aggbug/88444.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47996/" target="_blank">7月编程语言排行榜</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>实现简单多层表头的办法</title><link>http://www.cnblogs.com/hsb0307/archive/2004/10/21/55018.html</link><dc:creator>学习.NET</dc:creator><author>学习.NET</author><pubDate>Thu, 21 Oct 2004 04:40:00 GMT</pubDate><guid>http://www.cnblogs.com/hsb0307/archive/2004/10/21/55018.html</guid><wfw:comment>http://www.cnblogs.com/hsb0307/comments/55018.html</wfw:comment><comments>http://www.cnblogs.com/hsb0307/archive/2004/10/21/55018.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hsb0307/comments/commentRss/55018.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hsb0307/services/trackbacks/55018.html</trackback:ping><description><![CDATA[<P><FONT size=2>看到CSDN上有人问，如何实现多层表头的问题，将自己的办法拿出来，和大家讨论。要实现多层表头，人人都能想到的办法是：顶上放一个html的table，下面放一个DataGrid，但关键是table元素的单元格与DataGrid列的对齐问题，因为对于table元素即使为每一个单元格定制了宽度，单元格也会随其内容变宽，可以看下面的例子：<BR>&lt;table&nbsp; border=1&gt;<BR>&lt;tr&gt;<BR>&lt;td width=100&gt;1111&lt;/td&gt;<BR>&lt;td&gt;22222&lt;/td&gt;<BR>&lt;tr&gt;<BR>&lt;td&nbsp; width=50&gt;3333&lt;/td&gt;<BR>&lt;td&gt;4444&lt;/td&gt;<BR>&lt;tr&gt;<BR>&lt;td&nbsp; width=50&gt;55555&lt;/td&gt;<BR>&lt;td&gt;77777777777&lt;/td&gt;<BR>&lt;/tr&gt;<BR>&lt;/table&gt;<BR>如果将上面的&lt;td width=100&gt;1111111&lt;/td&gt;改为&lt;td width=100&gt;1111111111111111111111&lt;/td&gt;，单元格会跟着变宽，因此给顶上的table元素指定列宽行不通。<BR>当然，也可以采用这种方式指定列宽&lt;td&gt;&lt;div class=css1&gt;22222222222222222222222&lt;div&gt;&lt;/td&gt;<BR>.css1<BR>{}{<BR>&nbsp;&nbsp;&nbsp; white-space:nowrap;<BR>&nbsp;&nbsp;&nbsp; overflow:hidden;<BR>&nbsp;&nbsp;&nbsp; text-overflow:ellipsis;<BR>&nbsp;&nbsp;&nbsp; width:100px;<BR>}<BR>但缺点是DataGrid Render时也要加此样式。</FONT></P>
<P><FONT size=2>我的办法很简单，具体是：<BR>1、自己设计表头，就是设计table元素，有插入行、插入列、删除行列、合并行列等。表头存成xml或html的table格式。我是用服务器端代码写的，好像有js的，如swap或FreeTextBox，不知有没有合并、拆分单元格功能。<BR>2、在表头下面放一个DataGrid，不过要重写这个DataGrid的render方法，去除其&lt;table ......&gt;部分，同时表头去除&lt;/table&gt;。这样使表头table和DataGrid render后构成一个table元素。我写了一个自定义报表的工具就用了这种方法。</FONT></P>
<P><FONT size=2>重写这个DataGrid的render方法：<BR></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">protected</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">override</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;Render(HtmlTextWriter&nbsp;output)<BR><IMG id=Codehighlighter1_54_323_Open_Image onclick="this.style.display='none'; Codehighlighter1_54_323_Open_Text.style.display='none'; Codehighlighter1_54_323_Closed_Image.style.display='inline'; Codehighlighter1_54_323_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_54_323_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_54_323_Closed_Text.style.display='none'; Codehighlighter1_54_323_Open_Image.style.display='inline'; Codehighlighter1_54_323_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_54_323_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 src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_54_323_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringWriter&nbsp;writer1&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;StringWriter();<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HtmlTextWriter&nbsp;writer2&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;HtmlTextWriter(writer1);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">base</SPAN><SPAN style="COLOR: #000000">.Render(writer2);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;text1&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;writer1.ToString().Trim();<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text1&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;text1.Remove(</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">,&nbsp;text1.IndexOf(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output.Write(text1);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">可能变量名没有具体意义，我的源码找不到了，只好反编译了一下。<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV></FONT><BR><FONT size=2>最后发发牢骚，不要打压能力比自己强的人，不要因为自己能力不如别人就别人的坏话，也不要看不起能力不如自己的人。如果你是项目组的头，一定要将这样的人剔除出去，这样的人太浮躁，一般不能踏踏实实干活，老让别人帮助解决问题，最后却说是自己解决的。一个老鼠屎坏了一锅汤呀，如果项目组的头是这样的人，组员就倒霉了，所有功劳肯定都是这头的，这是需要更上层领导的处理，不过一般这样的人都和领导关系很好，因为这样的人很会......领导，特别是国有企业里。个人建议这样的人到政府去做官。<BR></FONT><img src ="http://www.cnblogs.com/hsb0307/aggbug/55018.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47995/" target="_blank">Google Voice 上手</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item></channel></rss>