から削除:EFカスケードは、私は、次の2つのエンティティを持つ2つの別々のテーブル
public class Field {
public int FieldID { get; set; }
public String Name { get; set; }
public int LocationID { get; set; }
public virtual ICollection<FieldPlanning> FieldPlannings { get; set; }
}
public class Timeslot {
public int TimeslotID { get; set; }
public DateTime Start { get; set; }
public int MatchDayID { get; set; }
public virtual ICollection<FieldPlanning> FieldPlannings { get; set; }
}
は現在、これらの2つのエンティティの組み合わせは、以下のエンティティを構成する:
public class FieldPlanning {
public int FieldPlanningID { get; set; }
public int TimeslotID { get; set; }
public int FieldID { get; set; }
public virtual Timeslot Timeslot { get; set; }
public virtual Field Field { get; set; }
public virtual Match Match { get; set; }
}
このエンティティは、その後も持っていますMatchエンティティへのナビゲーションプロパティですが、これを簡潔にするために残しました。
フィールドまたはタイムスロットのいずれかが削除されると、関連するFieldPlanningレコードも同様に削除する必要があります。
私がアプリケーションを実行すると、「Timeslot_FieldPlanningがサイクルまたは複数のカスケードパスを引き起こす可能性があります」というエラーが表示されます。
modelBuilder.Entity<Timeslot>()
.HasMany(ts => ts.FieldPlannings)
.WithRequired(fp => fp.Timeslot)
.HasForeignKey(fp => fp.TimeslotID)
.WillCascadeOnDelete(false);
フィールドを削除すると問題なくFieldPlanningが削除されます。タイムスロットを削除しようとすると、以前と同じエラーが発生します。
FieldまたはTimeslotのいずれかを削除できるように、また両方のエンティティに対してCascadeOnDeleteがtrueになるように修正するにはどうすればよいですか?
私はHans Riesebosの答えhereを読みましたが、問題にどのように適用するかを理解できませんでした。
EDIT: 現在地エンティティ:
public class Location {
public int LocationID { get; set; }
public String Name { get; set; }
public Address Address { get; set; }
public int TournamentID { get; set; }
public virtual Tournament Tournament { get; set; }
public virtual ICollection<Field> Fields { get; set; }
}
マイマッチエンティティ:それをしようとすると
が、私が特に適合するようにナビゲーションプロパティをコメントし、私が最初にそれを確認することができ
public class Match {
public int MatchID { get; set; }
public Boolean Forfeited { get; set; }
public int TeamAID { get; set; }
public int TeamBID { get; set; }
public int FieldPlanningID { get; set; }
public virtual Team TeamA { get; set; }
public virtual Team TeamB { get; set; }
public virtual FieldPlanning FieldPlanning { get; set; }
public virtual ICollection<Official> Officials { get; set; }
}
FieldPlanningとMatchの関係に問題があることを知っているので、これは0..1から0..1の関係であるため、Matchなしで作業しました。しかし、現行の問題でこの問題がどのように問題になるかはわかりません(Match in FieldPlanningのコメントプロパティを保持している限り)。
問題は、おそらくあなたのロケーションエンティティとマッチエンティティとの関係にあります。これらのエンティティを表示してマッピングすることもできます。 –
@ LadislavMrnkaこれらのエンティティも同様に追加しました。 – Mekswoll