EF:多对多级联删除
本文关键字:级联 删除 多级 EF | 更新日期: 2023-09-27 18:26:02
我有两个实体,它们应该具有多对多关系。我提供测试数据。
public class A
{
public int AId {get;set;}
public virtual ICollection<B> Bs {get;set;}
}
public class B
{
public int BId {get;set;}
public virtual ICollection<A> As {get;set;}
}
public class AMap : EntityTypeConfiguration<A>
{
public AMap()
{
HasMany(e => e.Bs)
.WithMany(e => e.As)
.Map(x =>
{
x.ToTable("AandB");
x.MapLeftKey("AId");
x.MapRightKey("BId");
});
}
}
在这个配置中,我需要设置级联删除。例如,当我删除表A中的任何行时,我需要删除表A和表B中所有相关的行。但我找不到多对多的语法。有人能帮我吗?
经过搜索,我找到了解决方案。要从多对多关系中删除实体,需要加载相关导航属性就我而言:
var AtoDelete= context.As.Include(a => a.Bs) .First(); //include is mandatory
context.As.Remove(AtoDelete);
context.SaveChanges();//deletes will be issued to AandB table also.