我有以下实体
public class Division
{
public int Id { get; set; }
public SubDivision SubDivision { get; set; }
}
public class SubDivision
{
public int Id { get; set; }
}
然后是流畅的API
modelBuilder.Entity<Division>()
.HasOptional(x => x.SubDivision)
.WithOptionalDependent()
.WillCascadeOnDelete(true);
然后我尝试删除一个部门,我期待它的SubDivisions被删除
Division div = c.Divisions.Include(x => x.SubDivision).First();
c.Divisions.Remove(div);
c.SaveChanges();
知道这是什么问题吗?
答案 0 :(得分:1)
级联删除始终从 principal (被引用的实体)到依赖(引用它的实体)工作,即删除主体会自动删除从属。
在一对多关系中,校长总是一方而且依赖 - 多方面。
在一对一的关系中,所需的结束始终是主体,可选的结束依赖。但是,如果两端都是必需的或两端都是可选的(与您的一样),则主体和从属由配置决定。在您的情况下,.WithOptionalDependent()
行告诉EF正在配置的实体(Division
)是依赖,因此Division
将具有FK到{{ 1}}并删除SubDivision
也会删除SubDivision
。
如果意图不同(正如问题所示),只需替换
即可Division
与
.WithOptionalDependent()