2017-10-07 57 views
1

我有以下实体级联删除未在EF 6的Code First工作

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); 

然后我尝试删除分区和我期待其细分为删除的不要

Division div = c.Divisions.Include(x => x.SubDivision).First(); 
c.Divisions.Remove(div); 
c.SaveChanges(); 

任何想法是什么问题?

回答

1

级联从主要(实体被引用)删除作品总是依赖(实体引用它),即删除主要自动删除相关的(多个)。

在一对多关系中,委托人总是一方并且依赖 - 多方。

在一对一关系中,所需结束始终​​是主体和可选结束依赖。但是,如果两端都是必需的或者两端都是可选的(与您的一样),则主体和从属关系由配置决定。在你的情况下,.WithOptionalDependent()线,告诉正在配置的实体EF(Division)是依赖,因此Division将有FK到SubDivision和删除SubDivision也将删除Division

如果意图是不同的(因为它似乎对这个问题),只需用

.WithOptionalPrincipal() 
更换

.WithOptionalDependent()