Спасибо за эти предложения.
Я начинаю понимать, что ответ состоит в том, чтобы перемоделировать данные в базе данных - либо по линиям вложенных наборов, как предлагает Георг, либо, может быть, по таблице переходного замыкания, с которой я только что столкнулся.
Таким образом, я надеюсь получить два ключевых преимущества:
а) более быстрый запрос произвольных поддеревьев
b) модель данных, которая больше не требует рекурсивных запросов - так что, возможно, она станет доступной для Entity Framework!
Всегда удивительно, как часто правильный ответ на сложную проблему - не ответить на нее, а сделать что-то другое!