• 在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

  • 相关阅读:
    JS复制内容到剪切板
    mysql root密码的重设方法(转)
    php生成excel文件示例代码(转)
    php读取文件内容的三种方式(转)
    使用火蜘蛛采集器Firespider采集天猫商品数据并上传到微店
    Mac Android8.0源码编译笔记
    开源 高性能 高可用 可扩展
    开源 模式
    开源 算法 数据结构
    mdb
  • 原文地址:https://www.cnblogs.com/sjqq/p/8424407.html
Copyright © 2020-2023  润新知