海豚宝宝的代码生活

专注于.Net系统开发

导航

2010年8月26日 #

EF学习杂记29:如何避免LazyLoad 或 Load() reader中的问题

摘要: 如果你有下面这样的代码: 上面的代码将同时打开两个连接,一个为了检索Customers对象, 另一个为了检索当前 Customer相关的Orders. 这样的操作只有在你启用了 Multiple Active ResultSets (aka MARS)功能以后才可以使用,否则会报错注: 你或许会奇怪我在这里为什么加入了一个 IsInteresting(..) 方法,如果没有这个方法,这里的代码将... 阅读全文

posted @ 2010-08-26 17:01 Bruse 阅读(440) 评论(0) 推荐(0)

EF学习笔记28:如何实现自己的预先加载(Eager Loading)策略

摘要: 背景: 在过去的两年中,很对开发者都抱怨EF中预先加载的执行方式。 下面是你经常会使用的预先加载的方式: 上面代码的意思很明确,要求EF预先加载所有符合要求的Blog的相关的Posts,代码会很好的执行。但是问题是这里使用了"Posts”这样的字符串的方式,这对于已经习惯于在常规的Linq语句或者Linq to SQL语句中使用强类型的我们来说,用string的这样类型不安全的方式... 阅读全文

posted @ 2010-08-26 16:25 Bruse 阅读(465) 评论(0) 推荐(0)

EF学习杂记33:EF中的级联删除是怎么运作的

摘要: 假设你有下面所示的具有级联删除关系的数据库表结构: 这里的级联删除规则是,当删除Category的时候,应当级联删除与之相关联的Products。 如果你根据上面的数据表结构生成相应的EF模型,像下面这样,看上去没有什么异常,这里并没有显示与级联删除相关的信息: 但是如果你看一下后台的CSDL文件,你就会发现有一点不同的地方,如下面文件所示: <Association Name=&quo... 阅读全文

posted @ 2010-08-26 14:02 Bruse 阅读(2705) 评论(0) 推荐(0)

2010年8月25日 #

【转载】Asp.Net 用户验证(自定义IPrincipal和IIdentity)

摘要: 下面的这篇文章其实不是新内容,只是有时候在进行Web开发的时候可能会用到,在这里记录一下,原文地址:http://www.cnblogs.com/JimmyZhang/archive/2008/12/07/1349457.html 引言 前一段时间有两个朋友问我,为什么在HttpModule中无法获得到Session值,因为他们希望自定义一个HttpModule,然后在其中获取Session来... 阅读全文

posted @ 2010-08-25 13:42 Bruse 阅读(224) 评论(0) 推荐(0)

2010年8月24日 #

EF学习杂记27:如何实现BeforeSave Validation

摘要: 在实际数据库存取过程中,我们经常要做的事情是想在把对象存入数据库之前进行有效性验证。一种天真的想法是,我们默认的认为要存入数据库中的对象都是合法有效的,但很多情况并非如此,这就需要我们在调用SaveChanges()函数之前,在一个正确的是件,对对象的合法有效性进行核实。 如何做? 首先你需要做的是利用分布类的方式为我们的Context增加一个Validate函数来对所有的实体进行合法性的验证... 阅读全文

posted @ 2010-08-24 17:34 Bruse 阅读(263) 评论(0) 推荐(0)

EF学习杂记26:如何通过使用Sbub Entity避免不必要的数据库检索

摘要: 什么叫 Stub Entities? 一个stub entity是一个代表真实实体的,但是只包含部分实体属性的特殊实体 举个例子: 这里的Category就是一个只包含了ID属性的不完整对象,只是表明了这是Category 5,这样的实体对象,我们称之为Sub Entity。Stub Entities 有什么作用?Stub Entities 在你不需要完全知道实体对象所有属性的时候将非常有用... 阅读全文

posted @ 2010-08-24 15:29 Bruse 阅读(6708) 评论(0) 推荐(0)

EF学习笔记5:怎样避免关系跨度

摘要: 背景与动机 在上一篇博文EF行话中,我介绍了关系跨度(Relationship Span)的概念。 如果你记得关系跨度仅仅是对实体中缺少外键属性的一种补偿。 一个实体的关系跨度,让我们以StaffMember为例,可以确保Entity Framework知道与StaffMember有0..1关系的其它实体的键(EntityKey)(如DisciplineHistory)。 这些键很重要,没有它们E... 阅读全文

posted @ 2010-08-24 14:01 Bruse 阅读(286) 评论(0) 推荐(0)

ef学习杂记4:怎样直接删除一个对象而无需检索它

摘要: 问题 最常见的删除Entity Framework中实体的方式是将你要删除的实体传入Context中并像如下这样删除:     然而这段代码会触发两条数据库命令而不是一条。我的意思是我实际需要完成的就是:大多数情况下这还不太坏,但是如果性能与可扩展性对你很关键,则这种方式绝不理想。解决方案幸运的是Entity Framework提供了名为AttachTo(…)的方... 阅读全文

posted @ 2010-08-24 13:54 Bruse 阅读(387) 评论(0) 推荐(0)

EF学习杂记3:如何及何时使用贪婪加载

摘要: 什么时候你需要使用贪婪加载?     通常在你的程序中你知道对查询到的实体将要进行怎样的操作。 例如,如果你查询一个订单以便为一个客户重新打印,你知道没有组成订单的项目即产品的信息重打印将是不完整的,所以你知道你将需要同时加载这些信息。     这是贪婪加载起作用的一类场景。 如果你知道你需要额外信息,或实体,你可能也会预先加载这... 阅读全文

posted @ 2010-08-24 13:40 Bruse 阅读(532) 评论(0) 推荐(0)

EF学习杂记2:开始T4之旅

摘要:     如果你读过Entity Framework Design Blog,你应该已经听我们讨论过T4。这是一项与Visual Studio 2008一起发行的技术(2005有一个独立的版本供下载)。     在.NET4.0中,Entity Framework使用了T4来增强代码生成与模型初始化这种场景。 事实上T4现在也用在其它一... 阅读全文

posted @ 2010-08-24 13:21 Bruse 阅读(421) 评论(0) 推荐(0)