一切福田,不離方寸,從心而覓,感無不通。

在Entity Framework中实现指定字段更新

又来一篇,大家也许都嫌烦了。但是写博客既能提高自己,又能帮助别人,而且每次写的过程中和发布出来之后都有收获,真是太赚了!麻烦大家忍一忍吧。 言归正题,在之前的一篇随笔“准备用Entity Framework实现数据的按需更新”中,我们实现了按需更新,但和这里的指定字段更新的应用场景不一样。 之前的按需更新的应用场景是:把需要更新与不需要更新的数据都给Entity Framework,由EF自己判断实际需要更新哪些。 现在的应用场景是:我明确知道要更新哪个字段,让EF做的只是更新这个操作,其他不用操心。 下面我们通过一个比喻来比较一下两者的区别。 比如我有一辆车想在汽车修理店更换一些部件。我把车停在车库里,来到修理间。这时,我就不能再直接接触这部车,必须通过修理间的工作人员。工作人员给我一个汽车模型,我有任何更换部件的想法,只能通过这个模型告诉他。 对应于第一种按需更新的场景,我不知道汽车需要实际更换哪些部件,我只知道更换后应该是什么样的。 流程是: 1. 告诉工作人员车牌号码,让他按照我放在车库中的汽车,制作一个一模一样的模型。 2. 工作人员把制作好的模型交给我。 3. 我在这个汽车模型的基础上修改成我想要的样子(但我不知道哪些部件要换,哪些部件不要换)。 4. 把修改好的汽车模型交给工作人员,让他去修理就行了。 5. 我悠然自得地去逛街,不用操心任何事。 对应于第二种根据指定字段更新的场景,我要更换前车灯,汽车修理店你不用管前车灯有没有坏,我就是要换,就是想让你们挣钱。 流程是: 1. 我随手从旁边拿了一个空汽车模型,修改为我想要的前车灯。 2. 把这个汽车模型交给工作人员,让他去修理就行了。 3. 我悠然自得地去逛街,不用操心任何事。 对于第二种场景,如果我们采用第一种场景的操作流程,工作人员累,效率低,费用自然也高。用第二个流程是必然的选择。 今天,我们终于找到了针对第二个流程的解决方法。 比如,我们要更新某个Blog的上次更新时间,我们只需要: 1. 新建一个Blog实体对象,告诉他要更新的Blog的ID以及“上次更新时间”。 2. 把这个实体对象交给Entity Framework,让他完成更新。 代码如下: public void UpdateBlogCoinfigLastUpdatedTest() { using (BlogDbContext context = new BlogDbContext()) { var blog = new Blog() { BlogID = 0, LastModified = DateTime.Now }; context.BlogConfigs.Attach(blog); var stateEntry = ((IObjectContextAdapter)context).ObjectContext. ObjectStateManager.GetObjectStateEntry(blog); stateEntry.SetModifiedProperty("LastUpdated"); context.SaveChanges(); } } EF生成的SQL语句如下: exec sp_executesql N’update [dbo].[blog_Config] set [LastUpdated] = @0 where ([BlogID] = @1) ',N’@0 datetime2(7),@1 int',@0=’2011-04-06 14:12:28.2129938′,@1=0 […]

龙生   09 Dec 2015
View Details

这是世界上最"老"的婴儿,他被冷冻了23年才出生~

一对澳大利亚的小夫妻Alex和Vi生了他们自己的宝宝和Xavier Powell…… 但这不是一个普通的婴儿…… 有人说,他是“世界上最老的婴儿”。 因为,孕育他的精子来自23年前!!! 事情是这样的…… 那还是在1990年,宝宝的爸爸才15岁时…… 当年,Alex被确诊为“霍奇金淋巴瘤”,必须立即接受化疗。 那天早上他完全震惊了!想一想好可怕,他觉得自己还那么年轻却被诊断出癌症…… 可是故事就是这么巧合,就在Alex被诊断为癌症的那天早上,他的继母Patricia在火车上遇到了一个女人。她的18岁儿子也被诊断为癌症,在接受化疗之后,孩子的个子出奇的小。 “那个女人告诉我青少年接受化疗之后会让身体变虚弱,并且化疗的副作用还会导致不育。” Patricia表示如果不是碰到这个女人,她也不会考虑到这些事情。 一番思索之后,Patricia拖着Alex去了精子银行存精。 Patricia现在回想当年的情景…… “我现在还记得他当时的样子。一手拿着装精子的容器,一边红着脸,满脸疑惑问我下一步该做什么。” 当时那种情况,本来就很尴尬啊…… 后来他终于撸出了一管……存完精之后,Alex就开始了漫长的和癌症斗争的岁月。 最后的结果,他战胜了癌症,去失去了生育能力。 康复后的他成了一名脊椎按摩师。 一次偶然的机会他遇到了后来的妻子Vi。 “我从来没想过冷冻精子,直到我遇到了她。我们想要自己的小孩,可是我不知道存了20多年的精子是不是真的还能用。” 在2013年底,他跟妻子一起来到冷冻银行取精,并做了试管受精。 Vi在怀胎十月后诞下了这个婴儿。 连做试管婴儿的医护人员都表示:“23年的精子,这个孩子应该是目前世界上最“老”的婴儿……” 无论如何,没有什么比获得完整的小家庭更开心的事儿了不是么~ ————— 日月若昕:继母挺好的都是正能量 曼_舞霓裳:天使一样的继母 我来宣传仙剑的:继母加分 _vanessa_527:好机智!! 稚子留美君:小宝宝好可爱 希望他健康成长 十月初五的夏沫:真真的这幸福太不容易了 想和自习室相爱的小七:宝宝在23年前就等着跟麻麻邂逅 军师333:所以他到底是怎么撸出那一管的 饭安迪:他很幸运也很幸福   from:http://news.163.com/15/1208/12/BAAIK6N1000155K8.html

龙生   09 Dec 2015
View Details