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的实体构建一个级联删除方法....对吧?

回答