我正在尝试对类似于对象的图形表示的模型进行建模,其中对象的子代是父代依赖的对象。
这里的示例是表结构。
Initative
Id | Name
1 | Init1
2 | Init2
3 | Init3
4 | Init4
InitiativeChildren
Id |InitiativeId InitiativeChildrenId
1 | 1 | 2
2 | 1 | 3
3 | 2 | 4
Categories
Id | InitiativeId | Name
1 | 1 | Init1Category1
2 | 1 | Init1Category2
3 | 1 | Init1Category3
4 | 2 | Init2Category1
5 | 2 | Init2Category2
6 | 2 | Init2Category3
7 | 3 | Init3Category1
8 | 3 | Init3Category2
初始ID = 1取决于初始ID = 2,3,其中初始ID = 2进一步取决于初始ID = 4
我想编写一个查询来为Initiative Id = 1拉出这样的对象
Initiative
{
Id : 1
Children = [ Initiative {
Id = 2,
Children = [ Initiative
{
Id = 4,
Children = []
}]
},
Initiative {
Id = 3,
Children = []
}]
}
即我希望子级主动性成为主动性对象,该对象将再次具有子级主动性,依此类推。 我希望结构像这样,以便在对对象进行操作之前可以使用深度优先搜索来解析子对象。 我设计的数据库结构是
我写的Entity Framework查询是
var result = context.Initiatives
.Include(m => m.InitiativeChildrens)
.Include(m => m.Categories)
.Where(m => m.Id == 1)
.ToList();
我目前得到的是,ChildrenInitiative应当有两个孩子,但是该孩子倡议的倡议还是ID = 1的同一倡议,而不是带有ChildInitiative.ChildInitiativeId的倡议对象
让我们假设这种表示形式暂时不会导致对循环图进行建模