Навигация по деревьям с помощью LINQ для сущностей - PullRequest
1 голос
/ 18 февраля 2009

У меня есть таблица Area, которая хранит области иерархическим образом. В таблице есть столбцы Id и ParentId. ParentId связан с внешним ключом столбца Id таблицы.

Когда я генерирую EDM, я получаю два навигационных свойства, Area1 и Area2. Как мне вернуть древовидную структуру моих областей и перемещаться по дереву, используя LINQ для сущностей?

Возможно, я задаю не тот вопрос полностью, пожалуйста, потерпите меня. :)

Ответы [ 2 ]

2 голосов
/ 18 февраля 2009

Это правильный вопрос. Когда вы генерируете на основе схемы базы данных, LINQ автоматически называет ребенка и родителей.

Я бы проверил файл designer.cs для вашей модели, но, скорее всего, Area1 - это ребенок, а Area2 - это родитель. Или наоборот.

Если вы хотите получить все дочерние элементы текущего экземпляра Area:

foreach (Area childArea in currentArea.Area1) {
    // do something
}

Если вы хотите, чтобы родитель:

Area parentArea = currentArea.Area2;

Я не знаю, можете ли вы переименовать ребенка и родителя, это должно быть возможно. Просто не много копался в этом.

1 голос
/ 18 февраля 2009

Я думаю, что простое переименование свойств устранит большую часть вашей путаницы. Одним из этих свойств являются дочерние элементы текущего экземпляра; другой является родителем текущего экземпляра. Посмотрите на детали отображения, чтобы выяснить, что есть что. Затем измените имя свойств, чтобы они соответствовали их функциям. Теперь запросы должны быть намного легче писать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...