0

次のような親子関係があります。

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 を無効にするすべてのエンティティに対してカスケード削除メソッドを構築する必要はないと思います....そうですか?

4

1 に答える 1

1

Forgein Key を使用してアイテムを削除しようとすると、このエラーが表示されます。

Card==Deleting Card のすべての面を削除する必要があります。

ここでは、EF での削除に関する詳細情報を見つけることができます

于 2013-02-18T22:49:34.420 に答える