什么是级联删除?
当删除一个表中的记录时,自动删除与之关联的其他表中依赖该记录的所有数据,以维护数据完整性
如何实现级联删除?
FluentAPI:
public class ThisDbContext : DbContext
{
public DbSet<Parent> Parents { get; set; }
public DbSet<Child> Children { get; set; }
public ThisDbContext(DbContextOptions<ThisDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Child>()
.HasOne(c=>m.Parent)
.WithMany(p => p.Children)
.HasForeignKey(m => m.ParentId)
.OnDelete(DeleteBehavior.Cascade); // 配置级联删除
base.OnModelCreating(modelBuilder);
}
}
注解: 目前EF并未提供标准注解以配置级联删除