次のような親子関係があります。
public class Card
{
public virtual int CardId { get; set; }
public virtual Set ParentSet { get; set; }
public virtual IList<Side> Sides { get; set; }
}
public class Set
{
public virtual int SetId { get; set; }
public virtual Set ParentSet { get; set; }
public virtual IList<Card> Cards { get; set; }
}
public class Side
{
public virtual int SideId { get; set; }
public virtual Card ParentCard { get; set; }
}
したがって、セットにはサイドを含むカードが含まれます。Set には、他の Set を含めることもできます。
基本的な削除コントローラーアクションを作成してみました:
public ActionResult DeleteConfirmed(int cardId)
{
Card card = _db.Cards.FirstOrDefault(c => c.CardId == cardId);
if (card == null)
{
return HttpNotFound();
}
_db.Cards.Remove(card);
_db.SaveChanges();
return RedirectToAction("Detail", "Set", new {setId = card.ParentSet.SetId});
}
しかし、エラー DbUpdateException が発生します。
「リレーションシップの外部キー プロパティを公開していないエンティティの保存中にエラーが発生しました。単一のエンティティを例外のソースとして識別できないため、EntityEntries プロパティは null を返します。保存中の例外の処理は、外部キー プロパティを公開することで簡単に行うことができます。エンティティ タイプの主要なプロパティ。」
必要に応じて詳細をここに投稿できますが、これは私のモデルまたは構成に関連する問題だと感じています。親の FK を無効にするすべてのエンティティに対してカスケード削除メソッドを構築する必要はないと思います....そうですか?