我有两个一对多关系的实体:
public class Staff {
...
public virtual ICollection<StaffWorkingTime> WorkingTimes { get; set; }
...
}
public class StaffWorkingTime {
...
public int StaffId { get; set; }
public virtual Staff Staff { get; set; }
...
}
并禁用默认约定删除约定:
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
我需要的是生成的迁移为cascadeDelete: true
类中的外键StaffId
生成StaffWorkingTime
,以便在删除Staff
时,所有相关内容StaffWorkingTime
也会被删除。
我尝试过的事情:
在[Required]
类中将Staff
添加到StaffWorkingTime
属性。
使用以下流畅的api结构(一次一个,而不是全部一起):
modelBuilder.Entity<Staff>()
.HasMany<StaffWorkingTime>(staff => staff.WorkingTime)
.WithRequired()
.WillCascadeOnDelete(true);
modelBuilder.Entity<StaffWorkingTime>()
.HasRequired<Staff>(wt => wt.Staff)
.WithMany()
.WillCascadeOnDelete(true);
以及其他一些变化。
我无法获得EF以生成&#34; cascadeDelete:true&#34;在迁移中。 它总是产生以下结果:
.ForeignKey("dbo.Staff", t => t.StaffId)
有什么想法吗?