How does Entity Framework work with recursive hierarchies? Include() seems not to work with it

c#, entity-framework, visual-studio-2008

Solution

Instead of using the `Include` method you could use `Load`.

You could then do a for each and loop through all the children, loading their children. Then do a for each through their children, and so on.

The number of levels down you go will be hard coded in the number of for each loops you have.

Here is an example of using `Load`: http://msdn.microsoft.com/en-us/library/bb896249.aspx

Problem

I have an `Item`. `Item` has a `Category`. `Category` has `ID`, `Name`, `Parent` and `Children`. `Parent` and `Children` are of `Category` too. When I do a LINQ to Entities query for a specific `Item`, it doesn't return the related `Category`, unless I use the `Include("Category")` method. But it doesn't bring the full category, with its parent and children. I could do `Include("Category.Parent")`, but this object is something like a tree, I have a recursive hierarchy and I don't know where it ends. How can I make EF fully load the `Category`, with parent and children, and the parent with their parent and children, and so on? This is not something for the whole application, for performance considerations it would be needed only for this specific entity, the Category.

Original source

Related problems