在Entity Framework Core中从同一个类实现多对多的最佳方法是什么?
在我的情况下,每个连接都是双向的。 如果项目“A”在其“RelatedItems”列表中具有项“B”,则项目“B”在其“RelatedItems”列表中具有项“A”。
class Item
{
int Data {get;set}
List<Item> RelatedItems {get;set;}
}
答案 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 );
});
...
}