自动从表中删除行

时间:2015-07-24 15:14:10

标签: c# entity-framework

我有两个实体:

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)为空。请帮忙,我该怎么做?

1 个答案:

答案 0 :(得分:0)

在不知道您的映射的情况下,我建议您将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);

            }

        }