2009-02-18 2 views
0

У меня есть таблица под названием Area, которая хранит области иерархически. В таблице есть идентификатор и столбец ParentId. Параметр ParentId связан с внешним ключом в столбце Id таблицы.Навигация по деревьям с LINQ к объектам

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

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

ответ

1

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

Я бы посмотрел конструктор.cs для вашей модели, но, скорее всего, Area1 является дочерним, а Area2 является родителем. Или наоборот.

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

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

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

Area parentArea = currentArea.Area2; 

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

1

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

Смежные вопросы