次の項目と前の項目を参照するItem
というクラスがあります。エンティティフレームワークコア自己参照表
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; }
}
私は別のテーブルGroup
を持っています。これはアイテムをグループ化するためのものです。
public class Group
{
private Group() { }
public Group(string groupName)
{
GroupId = Guid.NewGuid();
GroupName = groupName;
GroupItems = new List<Item>();
}
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<GroupItem> GroupItems { get; set; }
}
アイテムとそのグループを作成して保存する方法は次のとおりです。
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();
OnModelCreating
を使用して、同じテーブルへの2つの参照を処理するにはどうすればよいですか。
でそれを行うことができます(とにかく、これは別の質問のための主題です)アイテム '{' PreviousItemId '} - 'アイテム '{' ItemId '}、'アイテム '{' NextItemId '} - 'アイテム '{' ItemId '}'アイテム '{' NextItemId '} - >'アイテム '{' ItemId '}。 – Bryan
私はその使用法を含め、より詳細な質問に追加しました。 – Bryan
私は自分の答えを更新しました – YuriyP