EF核心 - 同一級別的多對多關係

c# entity-framework entity-framework-core

在Entity Framework Core中從同一個類實現多對多的最佳方法是什麼?

就我而言,每個連接都是雙向的。如果項目“A”在其“RelatedItems”列表中具有項“B”,則項“B”在其“RelatedItems”列表中具有項“A”。

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

熱門答案

您必須添加自引用外鍵關係,如下所示:

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 );
    });
  ...

}


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow