自动从表中删除行

本文关键字:删除行 | 更新日期: 2023-09-27 18:04:35

我有两个实体:

public class Book
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<Chapter> Chapters { get; set; }
}
public class Chapter
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Period { get; set; }
}

和,我想要的实体框架自动被删除行从表章,其中外键(Book_Id)是空的。

自动从表中删除行

不知道你的映射,我建议添加一个导航属性从Chapter回到Book。在你的映射章节,确保设置WillCascadeOnDelete。这将确保如果一个Book被删除,所有的Chapters也将被删除。

public class Book
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public ICollection<Chapter> Chapters { get; set; }
    }
    public class Chapter
    {
        public int Id { get; set; }
        public virtual int BookId {get;set;}
        public virtual Book Book {get;set;}
        public string Name { get; set; }
        public string Period { get; set; }
    }
     public class ChapterMapping : EntityTypeConfiguration<Chapter>
        {
            public ChapterMapping
            {
                HasKey(c=> c.Id);
                Property(c => c.Id).HasDatabaseGeneratedOption(
                    DatabaseGeneratedOption.Identity);
                HasRequired(c => c.Book).WithMany(b => b.Chapters)
               .HasForeignKey(c => c.BookId).WillCascadeOnDelete(true);
            }
        }