Billpeng Space

技术源自生活
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年10月1日

摘要: 在上篇随笔中, 我们发现Entity Framework在构建SQL语句时,将ToTable("CNBlogsTex.dbo.blog_PostBody")中 的"CNBlogsTex.dbo.blog_PostBody"转换为"[CNBlogsText.dbo].[blog_PostBody]",从而 造成不能进行跨数据库查询。 今天上午,我们通过Reflector对Entity Framework的代码进行分析,找出了真相。 真相如下: 1. 对于“CNBlogsTex.dbo.blog_PostBody"字符串,Ent 阅读全文

posted @ 2012-10-01 03:07 billpeng 阅读(264) 评论(0) 推荐(0) 编辑

摘要: 又来一篇,大家也许都嫌烦了。但是写博客既能提高自己,又能帮助别人,而且每次写的过程中和发布出来之后都有收获,真是太赚了!麻烦大家忍一忍吧。 言归正题,在之前的一篇随笔“准备用Entity Framework实现数据的按需更新”中,我们实现了按需更新,但和这里的指定字段更新的应用场景不一样。 之前的按需更新的应用场景是:把需要更新与不需要更新的数据都给Entity Framework,由EF自己判断实际需要更新哪些。 现在的应用场景是:我明确知道要更新哪个字段,让EF做的只是更新这个操作,其他不用操心。 下面我们通过一个比喻来比较一下两者的区别。 比如我有一辆车想在汽车修理店更换一些部件。我把车 阅读全文

posted @ 2012-10-01 03:06 billpeng 阅读(233) 评论(0) 推荐(0) 编辑

摘要: 解决了Entity Framework跨数据库查询问题,博客园现代化建设又向前迈进了一步。 在之前的一篇随笔“ 博客园现代化建设——AutoMapper ”中曾谈到,我们所遇到的应用场景是数据库查询返回的字段数少于实体类的属性,而默认情况下Entity Framework根据实体类的属性进行映射的,所以我们改用了AutoMapper。后来,真见在评论中指出可以在LINQ通过 select new 指定查询返回的字段,Entity Framework会根据返回的字段与实体类属性进行映射。 我们尝试了一下果然可以,但是,在所用的LINQ查询代码中有个地方不够现代化,代码如下: using (Bl. 阅读全文

posted @ 2012-10-01 03:06 billpeng 阅读(265) 评论(0) 推荐(0) 编辑

摘要: 值类型没有标识,只记录其他类值,所有属性都是只读,只能通过new来构造新的对象VALUE OBJECT 的设计包括共享和复制。 FLYWEIGHT(享元)模式可以实现共享VALUE OBJECT共享和复制的使用以下情况使用共享1)节省数据库空间或减少对象数量是关键要求时2)当通信开销很低时(中央服务器)3)共享对象被严格限定不可变的时候如果:用户中有对象:联系地址,而订单中有用户对象,并且要记下用户究竟将订单送到哪个地址上,此时,联系地址的ID就有标识的意义,所以这个时候地址就成了实体了。总之,实体和值对象在不同的项目中(甚至是同一项目的不同阶段) ,都是会转化的,转化的依据就是“需求”。实体 阅读全文

posted @ 2012-10-01 02:51 billpeng 阅读(1179) 评论(0) 推荐(0) 编辑

摘要: 这篇文章将讨论查询结果的加载控制。 EF4.1 允许控制对象之间的关系,当我们进行查询的时候,哪些关系的数据将会被加载到内存呢?所有相关的对象都需要吗?在一些场合可能有意义,例如,当查询的实体 仅仅拥有一个相关的子实体,但是,多数情况下,你可能只需要加载部分数据,或者你喜欢的话,加载更多的数据。 默认情况下, EF4.1 仅仅加载查询中涉及的实体,但是它支持两种特性来帮助你控制加载: 贪婪加载延迟加载 贪婪加载 对于下面的查询 using (var context = new MyDomainContext()) { var orders = from o in context.Ord... 阅读全文

posted @ 2012-10-01 01:49 billpeng 阅读(308) 评论(0) 推荐(0) 编辑