Сначала немного контекста: у меня есть проект MVC3 .net, который для краткости настроен примерно так:
Контроллер
- Создание объекта обслуживания (описано ниже)
- Использует сервис для извлечения записи БД из Монго (например, _service.GetPerson (id))
- пропускает домен для просмотра
Услуги
- Создание хранилища MongoRepository (описано ниже)
- Вызывает метод для извлечения записи из базы данных (например, _mongoRepository.Single (c => c.Id == id))
MongoRepository: IDisposable
- Конструктор (_server = Mongo.Create (ConfigurationManager.ConnectionStrings ["mongodb"]. ConnectionString))
- Одиночный метод (ниже)
- Способ утилизации
public T Single<T>(System.Linq.Expressions.Expression<Func<T, bool>> expression) where T : class, new()
{
return _server.GetCollection<T>().AsQueryable()
.Where(expression).SingleOrDefault();
}
Теперь это мой вопрос, поскольку вы можете видеть, что MongoRepository реализует интерфейс IDisposable, и я считаю, лучший способ гарантировать, что вызов Dispose - это использование блока 'using', но
1) когда / где это должно быть? Должно ли оно быть на уровне Service, внутри метода, вызывающего метод mongoRepository.Single?
2) когда следует создать экземпляр MongoRepository?
Если для ответа требуется больше кода, пожалуйста, дайте мне знать, я старался, чтобы он был коротким. Заранее спасибо.