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

  • 相关阅读:
    Mapreduce实例-Top Key
    Mapreduce实例-分组排重(group by distinct)
    storm0.9.0.1升级安装
    mysql配置文件my.cnf详解
    MYSQL管理之主从同步管理
    一个经典实用的iptables shell脚本
    sed实例精解--例说sed完整版
    常用的主机监控Shell脚本
    Python(九)Tornado web 框架
    缓存、队列(Memcached、redis、RabbitMQ)
  • 原文地址:https://www.cnblogs.com/sjqq/p/8424407.html
Copyright © 2011-2022 走看看