I\'ve seen two different manners that programmers approach when creating an entity context in their code.
The first is like such, and you can find it all over the MS
The second option actually does not clean up after itself if that's what you mean. I prefer the using ObjectContext version every time because I don't have to dispose it after. Not sure I got the question right though... Too many hours programming today.
public class UserManagerRepository : IUserManagerRepository, IDisposable
{
private readonly Entities _context = new Entities();
private bool _disposed;
public User Create(User user, int countryId)
{
user.Country = GetCountry(countryId);
_context.AddToUser(user);
_context.SaveChanges();
return user;
}
}
Then to use this repository I do something like:
using(var repository = new UserManagerRepository())
{
repository.Create(user);
}
Creating a new ObjectContext each time does involve 'some' overhead. Essentially the overhead involved is copying metadata from a global cache into metadata associated with the specific ObjectContext.
This overhead is relatively minor, so often it is not worth worrying about, especially when you consider the extra safety inherent in the using pattern.
For me which option you choose depends upon things like:
In general my recommendation is that if the methods are stateless, i.e. fire and forget a new context for each method is probably a good idea.
If however you have a relatively short lived stateful form or something then maybe a shared context is a better idea.
UPDATE: I've taken the time to put together a more complete answer