EF核心 - 同一类别中的多对多关系

时间:2016-07-12 10:44:34

标签: 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;}
}

1 个答案:

答案 0 :(得分:1)

您必须添加自引用外键关系,如下所示:

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

}