5

我无法让级联删除正常工作。这是我的外键表:

public class CoverageLevel
{
    public int Id { get; set; }
    public virtual MedicalPlan MedicalPlan { get; set; }  //foreign key
    public virtual VisionPlan VisionPlan { get; set; }    //foreign key
    public virtual DentalPlan DentalPlan { get; set; }    //foreign key
}

我尝试了三种不同的方法。当我不使用任何流畅的 API 时,它会适当地设置表和外键,但级联删除不起作用。当我使用此代码时:

modelBuilder.Entity<MedicalPlan>().HasMany(t => t.CoverageLevels).WithOptional.WillCascadeOnDelete();

它创建了第二列,所以我有一个完全为空MedicalPlan_Id的,然后是一个MedicalPlan_Id1它填充的。当我使用这个时:

modelBuilder.Entity<MedicalPlan>().HasMany(t => t.CoverageLevels).WithOptional().HasForeignKey(d => d.MedicalPlan).WillCascadeOnDelete();

创建数据库时出现错误。如何正确设置级联删除?

4

1 回答 1

4
modelBuilder.Entity<MedicalPlan>()
    .HasMany(m => m.CoverageLevels)
    .WithOptional(c => c.MedicalPlan)
    .WillCascadeOnDelete();

...应该是正确的映射。如果您在Withoptional(...)EF 中省略 lambda 表达式,则假定实体MedicalPlan.CoverageLevels中没有反向导航属性并且属于另一个关系,这就是第二个外键的原因。CoverageLevelCoverageLevel.MedicalPlan

于 2012-07-30T20:51:47.670 回答