Я пытаюсь смоделировать нечто похожее на графическое представление объекта, где его дочерние элементы являются зависимостями, от которых зависит родитель.
Примером здесь является структура таблицы.
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
Инициативный идентификатор = 1 зависит от Инициативного идентификатора = 2, 3, где Инициативный идентификатор = 2 дополнительно зависит от Инициативного идентификатора = 4
Я хочу написать запрос для извлечения объекта, подобного этомудля Инициативы Id = 1
Initiative
{
Id : 1
Children = [ Initiative {
Id = 2,
Children = [ Initiative
{
Id = 4,
Children = []
}]
},
Initiative {
Id = 3,
Children = []
}]
}
т.е. я хочу, чтобы дочерняя инициатива была Объектом Инициативы, которая снова будет иметь дочерние инициативы и так далее.Я хочу, чтобы структура была такой, чтобы я мог сначала использовать поиск по глубине, чтобы разрешить дочерние объекты, прежде чем воздействовать на этот объект.Структура базы данных, которую я разработал, -
И написанный мне запрос структуры Entity:
var result = context.Initiatives
.Include(m => m.InitiativeChildrens)
.Include(m => m.Categories)
.Where(m => m.Id == 1)
.ToList();
В настоящее время я получаючто у ChildrenInitiative есть два ребенка, как и должно быть, но Инициатива «Инициатива для этого ребенка» снова является той же самой Инициативой с Id = 1, в отличие от Инициативного объекта с ChildInitiative.ChildInitiativeId
Предположим, что это представлениепока не приводит к моделированию циклического графа