0

以下のようなオブジェクトがあります。

public class AdminMenuItem : BaseEntity
{
    public int? ParentMenuItemId { get; set; }
    public string Name { get; set; }
    public string Url { get; set; }

    public AdminMenuItem ParentMenuItem { get; set; }
}

2つのメニュー項目を追加しました。1 つは、親メニューを持たない A です。もう 1 つの B と A は、B の親メニュー項目です。

A を削除すると、以下の例外がスローされます。

The DELETE statement conflicted with the SAME TABLE REFERENCE constraint "FK_dbo.AdminMenuItem_dbo.AdminMenuItem_ParentMenuItemId".

データベース「A61DB」、テーブル「dbo.AdminMenuItem」、列「ParentMenuItemId」で競合が発生しました。ステートメントは終了されました

親の削除中に子アイテムも削除するには、どのような構成を行う必要がありますか? ループに入れて手動で行う必要がありますか、またはエンティティフレームワーク 5 で行うのに十分な方法はありますか? WillCascadeOnDeleteを使用しようとしましたが、成功しませんでした。

また、子オブジェクトの外部キーを null に設定する方法はありますか? (これはオプションです)

4

1 に答える 1

0

エンティティは ON CASCADE DELETE をサポートします。これを見てください:

カスケード-deletes-with-entity-framework-related-entities-deleted-by-ef

そしてこれ:

エンティティ フレームワーク オン 削除カスケード

および MSDN の記事:

How-cascade-delete-really-works-in-ef

于 2013-07-14T12:30:49.977 に答える