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:

clip_image001

Update from Database:

clip_image002

Function Imports got added:

clip_image003

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

clip_image004

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

clip_image005

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

image

Job Done Smile