2016-07-12 20 views
0

Entity Frameworkコアで同じクラスの多対多を実装する最も良い方法は何ですか?EFコア - 同じクラスの多対多の関係

私の場合、すべての接続は双方向です。 アイテム 'A'の「関連アイテム」リストにアイテム「B」がある場合、アイテム「B」は「関連アイテム」リストにアイテム「A」を持ちます。以下のよう

class Item 
{ 
    int Data {get;set} 
    List<Item> RelatedItems {get;set;} 
} 

答えて

0

あなたが自己参照の外部キーリレーションシップを追加する必要があります。

public class Item 
{ 

    public Item() 
    { 
     RelatedItems = new List<Item>(); 
    } 

    public int ItemId { get; set; } 
    public int? ParentItemId { get; set; } 
    public Item ParentItem{ get; set; } 
    public List<Item> RelatedItems { get; set; } 
} 

流暢API:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
... 
    modelBuilder.Entity<Item> => 
    { 
     entity 
      .HasMany(e => e.RelatedItems) 
      .WithOne(e => e.ParentItem) 
      .HasForeignKey(e => e.ParentItemId); 
    }); 
    ... 

} 
関連する問題