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
}

私が試した3つの異なる方法があります。流暢なAPIを使用しない場合、テーブルと外部キーは適切に設定されますが、カスケード削除は機能しません。このコードを使用する場合:

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

2番目の列が作成されるので、完全にnullMedicalPlan_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でラムダ式を省略すると、エンティティMedicalPlan.CoverageLevelsに逆ナビゲーション プロパティがなく、2 番目の外部キーの理由である別の関係に属していると見なされます。CoverageLevelCoverageLevel.MedicalPlan

于 2012-07-30T20:51:47.670 に答える