海豚宝宝的代码生活

专注于.Net系统开发

导航

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)

EF学习杂记1:如何在继承类中返回指定的类

摘要: 假设有一个如下这样的模型: 怎样仅仅查询Cars? 这是OfType<SubType>()登场的时候。你编写如下这样的代码: 且这个可以很好的工作。这将结果限制在Cars,附带包含了Cars,Sports 怎样仅查询Cars而不附带其子类型? 考虑你的预算只够选择一个简单的家用轿车。这意味着你不想要SUV与运动轿车(SportsCars)。 你需要在查询中明确限制以避免返回所有的子类... 阅读全文

posted @ 2010-08-24 11:36 Bruse 阅读(353) 评论(0) 推荐(0)