Предложения для запроса иерархических данных - PullRequest
2 голосов
/ 05 декабря 2011

Я пытаюсь определить наиболее эффективный способ выполнения следующего запроса с помощью Entity Frameworks (с использованием C #, ASP.NET MVC и SQL Server).

У меня есть иерархическая таблица местоположений. Столбец ParentLocationID ссылается на родительское местоположение. Например, Соединенные Штаты могут быть родительским местоположением штата Юта.

[Locations]
ID int
Title nvarchar(100)
ParentLocationID int

И тогда у меня есть таблица действий со ссылкой на соответствующее местоположение.

[Activities]
ID int
Title nvarchar(100)
LocationID int

Запрос, который я хочу выполнить, состоит в том, чтобы найти все действия для данного местоположения, включая все действия для «под-местоположений» этого местоположения. (Например, если местоположение - Соединенные Штаты, я должен включить все мероприятия для Соединенных Штатов, Юты, Солт-Лейк-Сити, Калифорнии и т. Д.)

Используя только C #, я бы написал рекурсивный метод для реализации этого. Но мне интересно, поддерживает ли EF или SQL Server этот сценарий, который не требует многочисленных отдельных запросов. Я хотел бы услышать некоторые советы о том, как другие люди могут подойти к этому.

1 Ответ

2 голосов
/ 05 декабря 2011

Использование общих табличных выражений ( CTE ):

http://msdn.microsoft.com/en-us/library/ms190766.aspx

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