zoukankan      html  css  js  c++  java
  • 在EntityFramework(EF)中删除主从表记录

    删除主表: 

    如果要删除单个的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

  • 相关阅读:
    编写登陆认证程序
    模拟实现一个ATM + 购物商城程序
    三级菜单
    12 场景制造
    11 Unity Editor界面
    3.7练习题
    Coolite 弹窗妙用
    Nginx反向代理 实现Web负载均衡
    MySQL 架构
    Lnmmp
  • 原文地址:https://www.cnblogs.com/sjqq/p/8424407.html
Copyright © 2011-2022 走看看