我有以下实体
public class Division
{
public int Id { get; set; }
public SubDivision SubDivision { get; set; }
}
public class SubDivision
{
public int Id { get; set; }
}然后fluent 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();知道有什么问题吗?
发布于 2017-10-07 15:41:51
级联删除总是从主体(被引用的实体)工作到依赖的(引用它的实体),即删除主体自动删除依赖项。
在一对多的关系中,主体总是一方,而依赖者是多方面的。
在一对一的关系中,所需的结束始终是主体和可选的端依赖的.但是,如果两端都是必需的,或者两端都是可选的(与您的一样),则主体和依赖项由配置决定。在您的示例中,.WithOptionalDependent()行告诉EF正在配置的实体(Division)是依赖的,因此Division将有一个FK到SubDivision,删除SubDivision也将删除Division。
如果意图不同(如问题所示),只需替换
.WithOptionalDependent()使用
.WithOptionalPrincipal()https://stackoverflow.com/questions/46621802
复制相似问题