Я использую Entity Framework 4 и создал класс UnitOfWork, который создает мой Контекст и предоставляет его через открытое свойство в качестве интерфейса IContext.Класс Context наследует от ObjectContext и предоставляет мои сущности Poco как открытые свойства, например:
public IObjectSet<User> Users
{
get { return _users ?? (_users = CreateObjectSet<User>("Users")); }
}
private IObjectSet<User> _users;
Я также создал несколько классов репозитория, которые принимают этот контекст в качестве параметра конструктора и используют этот контекст при выполнении запросов в репозитории.классы.Вот как я использую все это вместе:
using(var uow = new UnitOfWork(connectionstring))
{
using(var repository = new UserRepository(uio.Context))
{
//This is the place where a connection is opened in the database
var user = repository.GetUserByName(username);
}
}
//The connection is still open here even though
Класс UnitOfWork реализует интерфейс IDisposable и вызывает Context.Dispose () внутри его метода Dispose.
Когда я закрываю свое приложение,Открытое соединение в моей базе данных пропало, поэтому мой вопрос: что здесь происходит?:-) Как правильно расположить экземпляр Context (ObjectContext) в моем классе UnitOfWork, чтобы закрыть открытое соединение в моей базе данных?