views:

523

answers:

1

Hi there

I'm using Entity Framework in my project, and I have the problem that, once I pass my entities to a View (keep in mind that these entities have lazy-initialized objects along the lines of: Products.Owner, where owner is an object that is lazily initialized) I get a run-time exception telling me that the ObjectContext is out of scope.

Now this makes sense since I am getting the entities from a Service with a using (.... entities...) { .... } statement, which means it is disposed when the result is returned.

How would I get around this and have an Object Context that is alive from start to end. Thanks.

+2  A: 

One option is to associate the repository with the Request, and have the Repository implement IDisposable, and have the Dispose method dispose of the contained ObjectContext, rather than using the more familiar using pattern inside your controller actions.

Alex James
Would you be able to supply a code-example of what you are suggesting ?
CodeMonkey
To add to this: Controller already implements IDisposable. So you can new up your repository in Controller.Initialize and Dispose it in Controller.Dispose. This keeps the context alive when the view is executed.
Craig Stuntz