我有两个实体:
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)为空。请帮忙,我该怎么做?
答案 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);
}
}