本章的方法探讨一些可以应用于对象和实体框架的流程定制。这些方法涵盖了许多“幕后”的东西,它可以使你的代码更统一,比如通过更关注应用程序核心业务规则执行的细节,应用范围更广泛。我们开始本章的一个方法,告诉你如何拥有自己的代码执行SaveChanges()在您的应用程序中。如果你想在你的应用程序中从一个单一的点执行业务规则,那么这个方法和一些其他的特别有用的。在其他的方法中,我们将向您展示如何跟踪数据库连接,如何自动响应收集更改,如何实现级联删除,如何分配默认值,以及如何使用强类型XML属性。所有这些方法的共同点是延伸在实体框架的对象和过程使你的代码更具弹性的,均匀的,和可维护性。

执行代码在SaveChange()时被调用

问题

  你要执行的代码都是在数据上下文savechanges()执行时被调用

解决方案

  让我们说,你有一个模型,代表一个求职者。作为该模型的一部分,您希望将包含申请人的简历的文件被删除时,申请人的记录被删除。你可以在你的应用程序中找到每一个地方,你需要删除一个申请人的记录,但你想要一个更一致和统一的方法。

  为了确保申请人的简历文件被删除时,申请人被删除,则在DbContext中从写SavingChanges()方法。在我们的方法中,我们需要监测DbContext的改动,包括删除申请人实体的实例。接下来我们需要告诉实体框架通过调用真正的savechanges()方法保存更改。最后,对于每一个已删除的申请人,我们需要删除相关的简历文件。

using (var context = new School5Entities()){var path1 = "Alex Jones.txt";File.AppendAllText(path1, "Alex Jones\n Resume\n...");var path2 = "Janis Rogers.txt";File.AppendAllText(path2, "Janis Rodgers\n Resume\n...");var app1 = new Applicant{Name = "Alex Jones",ResumePath = path1};var app2 = new Applicant{Name = "Janis Rogers",ResumePath = path2};context.Applicants.Add(app1);context.Applicants.Add(app2);context.SaveChanges();// delete Alex Jones
                context.Applicants.Remove(app1);context.SaveChanges();}

  public override int SaveChanges(){Console.WriteLine("Saving Changes...");var applicants = this.ChangeTracker.Entries().Where(e => e.State == System.Data.Entity.EntityState.Deleted).Select(e => e.Entity).OfType<Applicant>().ToList();Console.WriteLine("\n{0} applicants deleted",applicants.Count().ToString());foreach (var app in applicants){File.Delete(app.ResumePath);Console.WriteLine("\n{0}'s resume at {1} deleted",app.Name, app.ResumePath);}int changes = base.SaveChanges();return changes;}

运行结果:

转载于:https://www.cnblogs.com/yunxiaguo/p/5709873.html

《Entity Framework 6 Recipes》中文翻译——第十二章自定义EntityFramework对象(一)...相关推荐

  1. Gradle 2.0 用户指南翻译——第二十二章. 标准的 Gradle 插件

    翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc 本文翻译所在分支: https://github.com/msdx/gradledoc/tre ...

  2. 统计学怎么求加权指数_暨南大学《统计学》中文习题 第十二章 统计指数

    第十二章 统计指数 (一)判断题 1. 狭义指数是指反映社会经济现象变动与差异程度的相对数.( ) 是: 否: 2. 广义上说,任何两个不同时间的同类指标的对比都可称为指数.( ) 是: 否: 3. ...

  3. Palabos User Guide中文解读 | 第十二章 | 数据评估

    作者的话:本人在学习palabos时,发现国内中文资料甚少,恰好网上可以直接搜到palabos user guide这种英文资料,加之时间充裕,便打算开始翻译,翻了一节后发现这可能算侵权,就比较伤脑筋 ...

  4. 《Entity Framework 6 Recipes》中文翻译系列 (45) ------ 第八章 POCO之获取原始对象与手工同步对象图和变化跟踪器...

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 8-6  获取原始对象 问题 你正在使用POCO,想从数据库获取原始对象. 解决方案 ...

  5. 《Entity Framework 6 Recipes》中文翻译系列 (32) ------ 第六章 继承与建模高级应用之TPH与TPT (1)...

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 6-6  映射派生类中的NULL条件 问题 你的表中,有一列允许为null.你想使用 ...

  6. 《Introduction to Tornado》中文翻译计划——第五章:异步Web服务

    http://www.pythoner.com/294.html 本文为<Introduction to Tornado>中文翻译,将在https://github.com/alioth3 ...

  7. Highcharts翻译系列十二:gauge测量图

    Highcharts翻译系列十二:gauge测量图 说明 测量图需要highcharts-more.js的支持 属性 参数 描述 默认值 animation 动画 true color 主要颜色或序列 ...

  8. 鸟哥的Linux私房菜(服务器)- 第十二章、网络参数控管者: DHCP 服务器

    第十二章.网络参数控管者: DHCP 服务器 最近更新日期:2011/07/27 想象两种情况:(1)如果你在工作单位使用的是笔记本电脑,而且常常要带着你的笔记本电脑到处跑, 那么由第四章.连上 In ...

  9. 高级shell编程笔记(第十二章 外部过滤器,程序和命令)

    第十二章 外部过滤器,程序和命令 标准的UNIX命令使得脚本更加灵活.通过简单的编程结构把shell指令和系统命令结合起来,这才是脚本能力的所在. 12.1 基本命令 新手必须掌握的初级命令 ls 基 ...

  10. 从零开始的linux 第十二章

    从零开始的linux 第十二章 (敲门声)咚咚咚... 路人甲:"小..小编大人在家吗?" (睡意朦胧的小编去开门):唉??路...路人甲!? (↑看到小编后的路人甲):" ...

最新文章

  1. 一起学并发编程 - 简易线程池实现
  2. java super父类的父类_合理使用父类的财富——Java中的super
  3. fastjson 对象和json互转
  4. iOS应用跳转qq指定联系人聊天
  5. perl的几个for循环判断
  6. Wireshark抓包工具使用
  7. Windows 0day成功验证之ETERNALBLUE
  8. Ehcache详细解读
  9. [Ext JS]treelist实现tooltip
  10. 国庆通知:地球不爆炸,CSDN 不放假!
  11. emacs之occur mode笔记
  12. WPF 自己动手来做安装卸载程序
  13. 黑客编程入门书籍推荐——《WINDOWS黑客编程技术详解》
  14. Java 实现MD5
  15. 彻底的卸载SQL Server2005?
  16. 用计算机绘制二项分布概率图,二项分布和泊松分布实验.doc
  17. 腾讯云网站备案咨询:网站信息类问题汇总解答
  18. 阿里技面之raft如何选主
  19. 不是吧!做了3年Android还没看过OkHttp源码?好吧,带你彻底理解一波!
  20. 【Java练习】2022个人所得税计算

热门文章

  1. 创建模式--辛格尔顿
  2. 荣新广源B班20121207作业
  3. 春节见闻之北京前门步行街
  4. Java多线程看着一篇足够了!
  5. v2ex热帖:面了几个程序员(3-5年),发现他们对MySQL的distinct关键字有误解......
  6. 看图说话,FastJson 并没有那么流行!
  7. 5 个底层程序设计逻辑,决定你有多牛逼
  8. CodeReview 常见代码问题( 上 )
  9. 历经8年双11流量洗礼,淘宝开放平台架构和技术难点解密
  10. 富士康给员工分红 平均每人33万元