0

我有一些父/子關係如下:刪除孩子和家長在MVC4與EF Codefirst

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; } 
} 

所以,一套包含卡包含邊。一個集合也可以包含其他集合。

我試圖創建一個基本刪除控制器動作:

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的實體構建一個級聯刪除方法....對吧?

回答