实体框架6一对多关系中的级联删除禁用约定

时间:2016-05-04 13:39:48

标签: c# entity-framework entity-framework-6

我有两个一对多关系的实体:

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)

有什么想法吗?

0 个答案:

没有答案