删除主表: 

如果要删除单个的Book对象,由于启用了级联删除,干掉一个Book,它所关联的所有BookReview也一并删除了。

(说的简单,如果用Attach方法或者Remove,加修改删除状态,只要使用之前加载的包含子表记录的对象是不行的)

先查询要删除的记录(因为有级联删除,所以不加载子表记录),然后再Remove,最后SaveChange即可;

删除子表:

如果想删除单个书评,如果使用DB_First方式,Visual Studio生成的实体对象集合其类型为ICollection<T>,实际上是一个普通的HashSet<T>集合对象,不具备跟踪对象状态的功能。因此,在删除单个对象时,需要显式设置其状态为EntityState.Deleted,否则,删除将失败:

using(var context=newEFModelFirstDbEntities())

{

Book book =context.Books.First();

BookReview reviewToBeDelete = book.BookReviews.FirstOrDefault();

 context.Entry(reviewToBeDelete).State =EntityState.Deleted;

book.BookReviews.Remove(reviewToBeDelete);

context.SaveChanges();

}

更简单的方式是直接从DbSet中移除,这是推荐的方式

Book book = context.Books.First();

BookReview reviewToBeDelete =book.BookReviews.FirstOrDefault();

context.BookReviews.Remove(reviewToBeDelete);

context.SaveChanges();

摘自金老师博客:http://blog.csdn.net/bitfan/article/details/13023223

在EntityFramework(EF)中删除主从表记录的更多相关文章

  1. mysql支持跨表delete删除多表记录

    前几天写了Mysql跨表更新的一篇总结,今天我们看下跨表删除. 在Mysql4.0之后,mysql开始支持跨表delete. Mysql可以在一个sql语句中同时删除多表记录,也可以根据多个表之间的关 ...

  2. cxGrid主从表删除从表记录的困惑

    cxgrid主从表显示方便直观. varADetailDC: TcxGridDataController;AView: TcxCustomGridTableView; with cxgrdbndtbl ...

  3. ABP 数据库 -- ABP&EF中的多表、关联查询

    本文介绍一下ABP中的多表查询. 1.创建实体 多表查询,在ABP或者EF中都很简单,这里我们创建一个Demo,一个学生实体.一个学校实体. 学校里面可以有很多学生,学生有一个学校. 实体如下: 学校 ...

  4. Chrome 中删除单条浏览记录

    悲伤...之前用非隐私窗口观看了小电影.于是打开 chrome://settings/ ...... 现在才知道 windows 上使用 shift + del 即可删除该浏览记录 ....... 以 ...

  5. EF Code first主从表,删除更新从表

    以order和orderItem为例,从表orderItem里有主表的orderId 想通过order.orderitems.add()或者remove()方法直接更新从表的话,必须在从表建立联合主键 ...

  6. EF中如何为表添加新的字段和映射

    首先先了解一下ef生成的模型edmx的代码,传送门:http://www.cnblogs.com/yushengbo/p/4807715.html 一.添加新的字段 例子就用我现在项目的这个吧,首先在 ...

  7. oracle多表关联删除数据表记录方法

    oracle多表关联删除的两种方法 第一种使用exists方法 delete from tableA where exits ( select 1 from tableB Where tableA.i ...

  8. Entity Framework中的主从表关系的使用

    其关系图: 我们使用Entity Framework生成映射关系如下: 其中author表中的books导航属性为一个集合,表示当前作者的书. 在页面中我们可以使用如下代码来实现: 代码中author ...

  9. 如何在sql server数据库中建立主从表

    建立关联是通过外键引用实现的 例如建立一个学生表和班级表的关联,可以如下: create table class ( classid char(4) primary key not null, cla ...

随机推荐

  1. 大数据的开始:安装hadoop

    为实现全栈,从今天开始研究Hadoop,个人体会是成为某方面的专家需要从三个方面着手 系统化的知识(需要看书或者比较系统的培训) 碎片化的知识(需要根据关注点具体的深入的了解) 经验的积累(需要遇到问 ...

  2. iOS:Masonry介绍与使用

    Masonry介绍与使用实践:快速上手Autolayout   frame----->autoresing------->autoLayout-------->sizeClasses ...

  3. 【转】python中文转换url编码

    今天要处理百度贴吧的东西.想要做一个关键词的list,每次需要时,直接添加 到list里面就可以了.但是添加到list里面是中文的情况(比如‘丽江’),url的地址编码却是'%E4%B8%BD%E6% ...

  4. Druid对比Cassandra

    不是Cassandra专家, 如果描绘有错误, 请通过邮件列表或者其他方式告知, 我们会修正. Druid对扫描和聚合做了很大程度的优化, 不用提前计算就支持任意的向下钻取, 还可以实时摄入流式数据并 ...

  5. Windows内核之线程简单介绍

    1 线程定义 <1> 内核对象,操作系统用它来对线程实施管理.内核对象也是系统用来存放线程统计信息的地方 <2>还有一个是线程堆栈.它用于维护线程在运行代码时须要的全部函数參数 ...

  6. 倍福TwinCAT(贝福Beckhoff)基础教程7.1 TwinCAT如何简单执行NC功能块 TC2

    TC2的程序是在TC3的基础上稍作调整,只说明不同点,请先看TC3的. TC2中的一个原本是AXIS_REF类型变量被拆成了两个(PLCTONC_AXLESTRUCT和NCTOPLC_AXLESTRU ...

  7. Rational Performance Tester(RPTv8.6) 在launch Schedule 时一直卡在 29%

    solution:Rational Performance Tester(RPTv8.6) 在launch Schedule 时一直卡在 29% 打开Task Manager(Windows serv ...

  8. SpringBoot Tips

    读取资源文件 @RestController @EnableAutoConfiguration public class ResourcesController { @Autowired privat ...

  9. android:numColumns="auto_fit" 失效问题

    GridView 设置此属性无效:android:numColumns="auto_fit" ,请确认已经设置过 android:columnWidth="*dp&quo ...

  10. jmeter测试TCP服务器/模拟发送TCP请求 设置16进制发送(转)

    转载留存:http://blog.sina.com.cn/s/blog_46d0362d0102v8ii.html 性能测试需要模拟多种场景,经常受制于资源限制,没办法建立贴近实际部署环境的场景.因而 ...