2017-08-30 10 views
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); 

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

つまたは複数の検証エラーがモデルの生成中に検出されました:

Vantage.Data.EF.MenuItem_Parent: で多重衝突をロール 'MenuItem_Parent_Target'の参照制約が の関係 'MenuItem_Parent'にあります。 依存ロールのすべてのプロパティはnull不可能なので、プリンシパルロール の多重度は「1」でなければなりません。

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

ありがとうございます。

答えて

0

ParentIdフィールドはNULL可能である必要があります。 parentidが必要な場合、レコードを作成することはできません。

だけpublic int? ParentId { get; set; }

public int ParentId { get; set; }

を変更

関連する問題