title: Entity Framework Core self referencing table
body: <p>I have a class called <code>Item</code> which references the next item and the previous item. </p>
  
  <pre><code>public class Item
  {
      private Item() { }
  
      public Item(string itemName)
      {
          ItemId = Guid.NewGuid();
          ItemName = itemName;
      }
  
      public Guid ItemId { get; set; }
      public string ItemName { get; set; }
  
      public Guid NextItemId { get; set; }
      public virtual Item NextItem { get; set; }
  
      public Guid PreviousItemId { get; set; }
      public virtual Item PreviousItem { get; set; }
  
      public Guid GroupId { get; set; }
      public virtual Group Group { get; set; }
  }
  </code></pre>
  
  <p>I have another table called <code>Group</code> it is for grouping it items. </p>
  
  <pre><code>public class Group
  {
      private Group() { }
      public Group(string groupName)
      {
          GroupId = Guid.NewGuid();
          GroupName = groupName;
          GroupItems = new List&lt;Item&gt;();
      }
  
      public void AddGroupItem(Item item)
      {
          if (Items.Count == 0)
          {
              Items.Add(item);
          }
          else
          {
              item.PreviousItem = Items.Last();
              item.PreviousItemId = Items.Last().ItemId;
              Items.Last().NextItem = item;
              Items.Last().NextItemId = item.ItemId;
  
              Items.Add(item);
          }
  
      }
  
      public Guid GroupId { get; set; }
      public string GroupName { get; set; }
      public virtual IList&lt;GroupItem&gt; GroupItems { get; set; }
  }
  </code></pre>
  
  <p>Here's how I create and save items and their group.</p>
  
  <pre><code>Group group1 = new Group("first group");
  Item item1 = new Item("item 1");
  Item item2 = new Item("item 2");
  Item item3 = new Item("item 3");
  
  group1.AddItem(item1);
  group1.AddItem(item2);
  group1.AddItem(item3);
  
  _context.Add(group1);
  _context.SaveChanges();
  </code></pre>
  
  <p>How do I write the <code>OnModelCreating</code> to handle the two references to the same table. </p>