<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_jlzhou</title><subtitle type="text">回复才有动力～～</subtitle><id>http://feed.cnblogs.com/blog/u/10199/rss</id><updated>2012-03-27T04:11:19Z</updated><author><name>jlzhou</name><uri>http://www.cnblogs.com/jlzhou/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jlzhou/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/10199/rss"/><entry><id>http://www.cnblogs.com/jlzhou/archive/2012/03/27/2419334.html</id><title type="text">使用强类型的Include显式预加载</title><summary type="text">大家都知道用以下方式显式预加载其他的SubEntity吧：Include("SubEntity1")对于有嵌套的情形Include("SubEntity1.SubSubEntity1")但是推荐使用以下方式，原因不言自明：using System.Data.Entity...Include(i=&gt;i.SubEntity1)对于有嵌套的情形（本文重点）Include(i=&gt;i.SubEntity1.Select(j=&gt;j.SubSubEntity1))以上代码EF4.3调试通过。</summary><published>2012-03-27T04:11:00Z</published><updated>2012-03-27T04:11:00Z</updated><author><name>jlzhou</name><uri>http://www.cnblogs.com/jlzhou/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jlzhou/archive/2012/03/27/2419334.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jlzhou/archive/2012/03/27/2419334.html"/><content type="html">&lt;p&gt;大家都知道用以下方式显式预加载其他的SubEntity吧：&lt;/p&gt;&lt;p&gt;Include("SubEntity1")&lt;/p&gt;&lt;p&gt;对于有嵌套的情形&lt;/p&gt;&lt;p&gt;Include("SubEntity1.SubSubEntity1")&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;但是推荐使用以下方式，原因不言自明：&lt;/p&gt;&lt;p&gt;using System.Data.Entity&lt;/p&gt;&lt;p&gt;...&lt;/p&gt;&lt;p&gt;Include(i=&amp;gt;i.SubEntity1)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;对于有嵌套的情形（本文重点）&lt;/p&gt;&lt;p&gt;Include(i=&amp;gt;i.SubEntity1.Select(j=&amp;gt;j.SubSubEntity1))&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;以上代码EF4.3调试通过。&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/jlzhou/aggbug/2419334.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/jlzhou/archive/2012/03/27/2419334.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/jlzhou/archive/2012/03/13/2394333.html</id><title type="text">关闭EF4.x Code First的级联删除Cascade Delete</title><summary type="text">EF4.1~4.3 Code First模式级联删除是默认打开的，在同一个实体多次引用另一个实体时，需要单独设置关闭某个外键关系下的级联删除，需要写Fluent API代码，而且级联删除有时会造成麻烦。干脆整个关了吧：usingSystem.Data.Entity.ModelConfiguration.Conventions;publicclassMyDbContext:DbContext{protectedoverridevoidOnModelCreating(DbModelBuildermodelBuilder){modelBuilder.Conventions.Remove&lt;One</summary><published>2012-03-13T11:08:00Z</published><updated>2012-03-13T11:08:00Z</updated><author><name>jlzhou</name><uri>http://www.cnblogs.com/jlzhou/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jlzhou/archive/2012/03/13/2394333.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jlzhou/archive/2012/03/13/2394333.html"/><content type="html">&lt;p&gt;EF4.1~4.3 Code First模式级联删除是默认打开的，在同一个实体多次引用另一个实体时，需要单独设置关闭某个外键关系下的级联删除，需要写Fluent API代码，而且级联删除有时会造成麻烦。干脆整个关了吧：&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;span  style="font-family: 'Courier New'; font-size: 13px; line-height: 19px; "&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.Data.Entity.ModelConfiguration.Conventions;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;MyDbContext&amp;nbsp;:&amp;nbsp;DbContext&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;protected&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;OnModelCreating(DbModelBuilder&amp;nbsp;modelBuilder)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modelBuilder.Conventions.Remove&amp;lt;OneToManyCascadeDeleteConvention&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modelBuilder.Conventions.Remove&amp;lt;ManyToManyCascadeDeleteConvention&amp;gt;();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;style type="text/css" isprelink="true"&gt;@import url(http://www.cnblogs.com/Load.ashx?type=style&amp;file=SyntaxHighlighter.css);&lt;/style&gt;&lt;style type="text/css"&gt;@import url(/css/cuteeditor.css);&lt;/style&gt;&lt;img src="http://www.cnblogs.com/jlzhou/aggbug/2394333.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/jlzhou/archive/2012/03/13/2394333.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/jlzhou/archive/2011/05/19/2050867.html</id><title type="text">关于Entity Framework 4.0/4.1数据验证的一点体会</title><summary type="text">最近用Entity Framework 4.1做一个MVC3的网站应用的数据层，遇到一个问题，在修改或添加实体属性的验证后，对数据库中已经存在的数据编辑会有影响，即使当前的编辑操作没有涉及到修改验证规则的项，在SaveChanges()也会抛出异常。比如说，有如下类定义：publicclassUser[代码]相应的验证定义：[代码]}如果上述定义中的[RegularExpressionAttrib...</summary><published>2011-05-19T03:20:00Z</published><updated>2011-05-19T03:20:00Z</updated><author><name>jlzhou</name><uri>http://www.cnblogs.com/jlzhou/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jlzhou/archive/2011/05/19/2050867.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jlzhou/archive/2011/05/19/2050867.html"/><content type="html">&lt;p&gt;最近用Entity Framework 4.1做一个MVC3的网站应用的数据层，遇到一个问题，在修改或添加实体属性的验证后，对数据库中已经存在的数据编辑会有影响，即使当前的编辑操作没有涉及到修改验证规则的项，在SaveChanges()也会抛出异常。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;比如说，有如下类定义：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;span style="font-family: 'Courier New'; font-size: 13px; "&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;User&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;UserId&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;LogOnName&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;System.DateTime&amp;nbsp;LastLogOnTime&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&amp;nbsp;}&lt;br /&gt;}&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;相应的验证定义：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;[MetadataType(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(UserMetaData))]&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;partial&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;User&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;UserMetaData&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Display(Name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;User&amp;nbsp;Id&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;UserId&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[StringLength(&lt;/span&gt;&lt;span style="color: #800080;"&gt;50&lt;/span&gt;&lt;span style="color: #000000;"&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Display(Name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Log&amp;nbsp;On&amp;nbsp;Name&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[RegularExpressionAttribute(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;^[a-zA-Z][a-zA-Z0-9_]{4,}$&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;ErrorMessage&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Please&amp;nbsp;enter&amp;nbsp;a&amp;nbsp;valid&amp;nbsp;Log&amp;nbsp;On&amp;nbsp;Name.&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[DisplayFormat(ConvertEmptyStringToNull&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;false&lt;/span&gt;&lt;span style="color: #000000;"&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;LogOnName&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Display(Name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Last&amp;nbsp;Log&amp;nbsp;On&amp;nbsp;Time&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;LastLogOnTime&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family: 'Courier New'; font-size: 13px; "&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;如果上述定义中的&amp;nbsp;&lt;span style="font-family: 'Courier New'; font-size: 13px; "&gt;&lt;span style="font-family: 'Courier New'; color: #000000; "&gt;[RegularExpressionAttribute(&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: #800000; "&gt;"&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: #800000; "&gt;^[a-zA-Z][a-zA-Z0-9_]{4,}$&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: #800000; "&gt;"&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: #000000; "&gt;,&amp;nbsp;ErrorMessage&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: #000000; "&gt;=&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: #000000; "&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: #800000; "&gt;"&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: #800000; "&gt;Please&amp;nbsp;enter&amp;nbsp;a&amp;nbsp;valid&amp;nbsp;Log&amp;nbsp;On&amp;nbsp;Name.&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: #800000; "&gt;"&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: #000000; "&gt;)]是在数据库中已经存在数据记录后添加，则可能会引发保存数据时的验证异常，即使没有编辑&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 13px; "&gt;LogOnName列。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;假设数据库Users表中有一行记录的LogOnName的值是123456，则下面的代码就会抛出异常：&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;User&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;db.Users.Find(id)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;User.LastLogOnTime&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;DateTime.Now();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;db.SaveChanges();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;will&amp;nbsp;raise&amp;nbsp;validation&amp;nbsp;exception&amp;nbsp;here!&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;由此推断，Entity Framework在修改数据时会检查实体所有的属性是否符合验证规则，不管属性是否会在本次修改数据操作中更新，目前还没找到解决办法。&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/jlzhou/aggbug/2050867.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/jlzhou/archive/2011/05/19/2050867.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/jlzhou/archive/2010/11/16/1878657.html</id><title type="text">[转]Visual Studio 2010帮助文件MSDN安装说明</title><summary type="text">使用VS2010也有几个月了，不过，一直奇怪的是居然找不到MSDN for VS2010的下载，由于VS2010用的是从网上下载的，带key的，自然联想到MSDN可能还没有离线的，或是还没有解除限制的供下载的版本。。。直到刚刚，我又去找MSDN，终于有了结果，原来MSDN就在Visual Studio 2010 Ultimate版的光盘镜像里！汗！加载VS2010的ISO镜像，里面有一个ProductDocumentation文件夹，其实这个就是安装MSDN的文件夹了。先安装好VS2010，运行VS2010，点击help，打开manage help settings，选择install con</summary><published>2010-11-16T08:23:00Z</published><updated>2010-11-16T08:23:00Z</updated><author><name>jlzhou</name><uri>http://www.cnblogs.com/jlzhou/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jlzhou/archive/2010/11/16/1878657.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jlzhou/archive/2010/11/16/1878657.html"/><content type="html">使用VS2010也有几个月了，不过，一直奇怪的是居然找不到MSDN for  VS2010的下载，由于VS2010用的是从网上下载的，带key的，自然联想到MSDN可能还没有离线的，或是还没有解除限制的供下载的版本。。。&lt;br /&gt;&lt;br /&gt;直到刚刚，我又去找MSDN，终于有了结果，原来MSDN就在Visual  Studio 2010 Ultimate版的光盘镜像里！汗！&lt;br /&gt;&lt;br /&gt;加载VS2010的ISO镜像，里面有一个ProductDocumentation文件夹，其实这个就是安装MSDN的文件夹了。&lt;br /&gt;&lt;br /&gt;先安装好VS2010，运行VS2010，点击help，打开manage  help settings，选择install content from  disk&lt;br /&gt;路径选择已加载ISO镜像里ProductDocumentation文件夹里的helpcontentsetup.msha文件。&lt;br /&gt;&lt;br /&gt;然后就点  ok，会出现一排待添加安装的MSDN帮助项，点&amp;#8220;add&amp;#8221;添加你要安装的MSDN内容，添加好后就开始安装。&lt;br /&gt;&lt;br /&gt;&lt;p&gt;这样就安装好了MSDN了，要用的时候在VS2010下按F1就行了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;http://club.topsage.com/thread-2281857-1-2.html&lt;img src="http://www.cnblogs.com/jlzhou/aggbug/1878657.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/jlzhou/archive/2010/11/16/1878657.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/jlzhou/archive/2006/05/10/396034.html</id><title type="text">[转]五种提高 SQL 性能的方法</title><summary type="text">author:JohnnyPapa DataPointsArchive 有时，为了让应用程序运行得更快，所做的全部工作就是在这里或那里做一些很小调整。啊，但关键在于确定如何进行调整！迟早您会遇到这种情况：应用程序中的SQL查询不能按照您想要的方式进行响应。它要么不返回数据，要么耗费的时间长得出奇。如果它降低了报告或您的企业应用程序的速度，用户必须等待的时间过长，他们就会很不满意。就像您的父母不想听您解释为什么在深更半夜才回来一样，用户也不会听你解释为什么查询耗费这么长时间。（“对不起，妈妈，我使用了太多的LEFTJOIN。”）用户希望应用程序响应迅速，他们的报告能够在瞬间之内返回分析数据。就我</summary><published>2006-05-10T03:50:00Z</published><updated>2006-05-10T03:50:00Z</updated><author><name>jlzhou</name><uri>http://www.cnblogs.com/jlzhou/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jlzhou/archive/2006/05/10/396034.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jlzhou/archive/2006/05/10/396034.html"/><content type="text">author:JohnnyPapa DataPointsArchive 有时，为了让应用程序运行得更快，所做的全部工作就是在这里或那里做一些很小调整。啊，但关键在于确定如何进行调整！迟早您会遇到这种情况：应用程序中的SQL查询不能按照您想要的方式进行响应。它要么不返回数据，要么耗费的时间长得出奇。如果它降低了报告或您的企业应用程序的速度，用户必须等待的时间过长，他们就会很不满意。就像您的父母不想听您解释为什么在深更半夜才回来一样，用户也不会听你解释为什么查询耗费这么长时间。（“对不起，妈妈，我使用了太多的LEFTJOIN。”）用户希望应用程序响应迅速，他们的报告能够在瞬间之内返回分析数据。就我</content></entry><entry><id>http://www.cnblogs.com/jlzhou/archive/2006/02/16/331812.html</id><title type="text">[转]对话周鸿祎:从程序员创业谈起</title><summary type="text">记者/闫辉离开雅虎中国后的周鸿祎现在的身份是IDGVC的投资合伙人，做风险投资的他自然对创业有着说不完的话题。由于周鸿祎出身程序员，也一直是本刊的忠实读者，他希望一方面站在投资商的角度，同时以一种过来人的身份来探讨“程序员创业”这个话题。一个周五的傍晚，在北京光华路的一个酒吧中，本刊约到周鸿祎进行这次对话。从昌平远道赶来的周鸿祎由于塞车而晚到了半个小时。由于开会讲了一天的话，他的声音有些嘶哑。不过在草草的吃了晚饭后，周鸿祎仍然用其快速的语调表达了自己的观点。记者:我已经看到您在其它的媒体上接受了一些采访，也谈到了很多关于创业的话题。面对程序员这个群体，讲创业有什么特别的地方呢？周鸿祎:的确如此</summary><published>2006-02-16T05:53:00Z</published><updated>2006-02-16T05:53:00Z</updated><author><name>jlzhou</name><uri>http://www.cnblogs.com/jlzhou/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jlzhou/archive/2006/02/16/331812.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jlzhou/archive/2006/02/16/331812.html"/><content type="text">记者/闫辉离开雅虎中国后的周鸿祎现在的身份是IDGVC的投资合伙人，做风险投资的他自然对创业有着说不完的话题。由于周鸿祎出身程序员，也一直是本刊的忠实读者，他希望一方面站在投资商的角度，同时以一种过来人的身份来探讨“程序员创业”这个话题。一个周五的傍晚，在北京光华路的一个酒吧中，本刊约到周鸿祎进行这次对话。从昌平远道赶来的周鸿祎由于塞车而晚到了半个小时。由于开会讲了一天的话，他的声音有些嘶哑。不过在草草的吃了晚饭后，周鸿祎仍然用其快速的语调表达了自己的观点。记者:我已经看到您在其它的媒体上接受了一些采访，也谈到了很多关于创业的话题。面对程序员这个群体，讲创业有什么特别的地方呢？周鸿祎:的确如此</content></entry><entry><id>http://www.cnblogs.com/jlzhou/archive/2005/11/02/266787.html</id><title type="text">[转]SQL Server利用数据库日志恢复数据到时间点的操作</title><summary type="text">可能有不少朋友遇到过这样的问题：update或delete语句忘带了where子句，或where子句精度不够，执行之后造成了严重的后果，这种情况的数据恢复只能利用事务日志的备份来进行，所以如果你的SQL没有进行相应的全库备份或不能备份日志（truncate log on checkpoint选项为1），那么就无法进行数据的恢复了，或者只能恢复到最近一次的备份的数据了。以下简单说明恢复数据方法：1，如果误操作之前存在一个全库备份（或已有多个差异备份或增量备份），首先要做的事就是进进行一次日志备份（如果为了不让日志文件变大而置trunc. log on chkpt.选项为1那你就死翘了） back</summary><published>2005-11-01T23:41:00Z</published><updated>2005-11-01T23:41:00Z</updated><author><name>jlzhou</name><uri>http://www.cnblogs.com/jlzhou/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jlzhou/archive/2005/11/02/266787.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jlzhou/archive/2005/11/02/266787.html"/><content type="text">可能有不少朋友遇到过这样的问题：update或delete语句忘带了where子句，或where子句精度不够，执行之后造成了严重的后果，这种情况的数据恢复只能利用事务日志的备份来进行，所以如果你的SQL没有进行相应的全库备份或不能备份日志（truncate log on checkpoint选项为1），那么就无法进行数据的恢复了，或者只能恢复到最近一次的备份的数据了。以下简单说明恢复数据方法：1，如果误操作之前存在一个全库备份（或已有多个差异备份或增量备份），首先要做的事就是进进行一次日志备份（如果为了不让日志文件变大而置trunc. log on chkpt.选项为1那你就死翘了） back</content></entry><entry><id>http://www.cnblogs.com/jlzhou/archive/2005/10/11/252403.html</id><title type="text">MSDN宇宙版到货！</title><summary type="text">终于到手啦！哈哈哈，期待VS2005，据微软的人说，已经release了，真的吗？</summary><published>2005-10-11T07:01:00Z</published><updated>2005-10-11T07:01:00Z</updated><author><name>jlzhou</name><uri>http://www.cnblogs.com/jlzhou/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jlzhou/archive/2005/10/11/252403.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jlzhou/archive/2005/10/11/252403.html"/><content type="text">终于到手啦！哈哈哈，期待VS2005，据微软的人说，已经release了，真的吗？</content></entry><entry><id>http://www.cnblogs.com/jlzhou/archive/2005/06/26/181608.html</id><title type="text">VB.NET LDAP 用户身份验证</title><summary type="text">前几天花了两天时间研究如何在.NET下验证LDAP的用户身份，看了一些java和vb的代码，碰了不少钉子，试验再试验，终于搞定，与大家分享... 首先，我要讲的LDAP不是微软的Active Directory目录服务，而是运行在SUN One上面的目录服务。 请看代码（部分敏感信息删节）： PrivateSubbtnTest_Click()SubbtnTest_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnTest.ClickDimLoginNameAsString=txtUser.TextDimLog</summary><published>2005-06-26T14:47:00Z</published><updated>2005-06-26T14:47:00Z</updated><author><name>jlzhou</name><uri>http://www.cnblogs.com/jlzhou/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jlzhou/archive/2005/06/26/181608.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jlzhou/archive/2005/06/26/181608.html"/><content type="text">前几天花了两天时间研究如何在.NET下验证LDAP的用户身份，看了一些java和vb的代码，碰了不少钉子，试验再试验，终于搞定，与大家分享... 首先，我要讲的LDAP不是微软的Active Directory目录服务，而是运行在SUN One上面的目录服务。 请看代码（部分敏感信息删节）： PrivateSubbtnTest_Click()SubbtnTest_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnTest.ClickDimLoginNameAsString=txtUser.TextDimLog</content></entry><entry><id>http://www.cnblogs.com/jlzhou/archive/2005/06/24/180732.html</id><title type="text">我的.NET开发环境设置</title><summary type="text">我想大家在开发过程中可能同样会遇到下列问题：1，多平台开发不同的开发工具，相同开发工具的不同版本混装在一起，稍有不慎就会搞得乱七八糟。2，试用新控件或者新工具很自然的，因为没用过，搞乱系统也就很正常啦，卸载也卸不干净。比如试用VS2005B23，病毒感染或者被3721之类下三滥黑了很讨厌的防治问题，上网找东西，很有可能被恶意脚本攻击。又不能随意重装系统，重装一次需要n小时。4，备份设置好的环境费了九牛二虎之力安装配置好的系统，不想以后再来一次或n次。5，多操作系统使用各种版本，类型的操作系统，新版windows使用新的激活策略，使用VOL版吧，升级又会有麻烦，不升级吧，请参考第3条。哈，控诉了</summary><published>2005-06-24T14:18:00Z</published><updated>2005-06-24T14:18:00Z</updated><author><name>jlzhou</name><uri>http://www.cnblogs.com/jlzhou/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jlzhou/archive/2005/06/24/180732.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jlzhou/archive/2005/06/24/180732.html"/><content type="text">我想大家在开发过程中可能同样会遇到下列问题：1，多平台开发不同的开发工具，相同开发工具的不同版本混装在一起，稍有不慎就会搞得乱七八糟。2，试用新控件或者新工具很自然的，因为没用过，搞乱系统也就很正常啦，卸载也卸不干净。比如试用VS2005B23，病毒感染或者被3721之类下三滥黑了很讨厌的防治问题，上网找东西，很有可能被恶意脚本攻击。又不能随意重装系统，重装一次需要n小时。4，备份设置好的环境费了九牛二虎之力安装配置好的系统，不想以后再来一次或n次。5，多操作系统使用各种版本，类型的操作系统，新版windows使用新的激活策略，使用VOL版吧，升级又会有麻烦，不升级吧，请参考第3条。哈，控诉了</content></entry></feed>
