0

親子関係で自分自身への参照を持つエンティティがあります。コードを最初に流暢な API を使用してこれを実装する方法を見つける必要があります。以下は私のエンティティクラスです。

public class MenuItem
{
    public int Id { get; set; }
    public string LinkText { get; set; }
    public string ControllerName { get; set; }
    public string ActionName { get; set; }

    public MenuItem Parent { get; set; }
    public int ParentId { get; set; }

    private IList<Role> Roles;
    private IList<MenuItem> ChildMenuItems;

    public MenuItem()
    {
        Roles = new List<Role>();
        ChildMenuItems = new List<MenuItem>();
    }
}

エンティティ構成で以下のコードを使用してみました。

HasOptional(m => m.Parent)
                .WithMany(m => m.ChildMenuItems)
                .HasForeignKey(m => m.ParentId)
                .WillCascadeOnDelete(false);

しかし、私はこのエラーが発生しました -

モデルの生成中に 1 つ以上の検証エラーが検出されました:

Vantage.Data.EF.MenuItem_Parent: : 多重度は、関係 'MenuItem_Parent' のロール 'MenuItem_Parent_Target' の参照制約と競合します。従属ロールのすべてのプロパティは null 非許容であるため、プリンシパル ロールの多重度は '1' でなければなりません。

すべての助けに感謝します。

ありがとうございました。

4

1 に答える 1