What is best way to implement many to many from same class in Entity Framework Core?
In my case Every connection is bidirectional. If Item 'A' has Item 'B' in its "RelatedItems" list, then Item 'B' has Item 'A' in its "RelatedItems" list.
class Item
{
int Data {get;set}
List<Item> RelatedItems {get;set;}
}
You have to add the self Referencing Foreign-Key-Relationship as following:
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; }
}
The fluent API:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
...
modelBuilder.Entity<Item> =>
{
entity
.HasMany(e => e.RelatedItems )
.WithOne(e => e.ParentItem)
.HasForeignKey(e => e.ParentItemId );
});
...
}