First of all, you're welcome to use the hierarchical queries in my LINQ Extension Methods project. I think may help simplify your code.
The problem here is that this will create a database call for each node in the hierarchy. In the case of your example, you will have 5 round-trips to the database.
I'd go a different path and create a stored-procedure to do that for me and return the whole set of Employee
objects. Since you're disconnecting the objects before returning them (disposing of the context), you could simply create new object from the stored procedure's result-set.