I wanted to be able to write a hierarchical query in LINQ but found that it’s not something you can do.

I knew how to write TVFs or User Defined Table Valued Functions and had used them in joins in pure TSQL before but I suspected that it ought to be possible to re-use that SQL within an EF model so I went hunting…

Eventually I was inspired by this http://code.msdn.microsoft.com/windowsdesktop/Recursive-or-hierarchical-bf43a96e

First, I added Function Imports for my TVFs to my (classic Database-First edmx) model:


Update from Database:


Function Imports got added:


I also ensured that the Return Type was one of the Entities already in the model:


I love it! – it's an IQueryable just like any other EntitySet:


So that means I can do some LINQ joins between the function and other EntitySets:


Job Done Smile