Каскадное удаление внешнего ключа в Code First

Я не могу заставить каскадное удаление работать правильно. Это моя таблица внешних ключей:

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

Я получаю сообщение об ошибке при создании базы данных. Как правильно настроить каскадное удаление?

5
задан Dawid Ferenczy Rogožan 14 January 2016 в 11:43
поделиться