In fact this is two questions in one:
- When should I
Dispose()
of a context? - What should be the lifespan of my context?
Answers:
-
Never 1.
using
is an implicitDispose()
in atry-finally
block. A separateDispose
statement can be missed when an exception occurs earlier. Also, in most common cases, not callingDispose
at all (either implicitly or explicitly) isn’t harmful. -
See e.g. Entity Framework 4 – lifespan/scope of context in a winform application. In short: lifespan should be “short”, static context is bad.
1 As some people commented, an exception to this rule is when a context is part of a component that implements IDisposable
itself and shares its life cycle. In that case you’d call context.Dispose()
in the Dispose
method of the component.