Я немного новичок в IoC StructureMap (и IoC в целом). Из примеров, я мой материал настроить так:Закрытие подключения базы данных при использовании StructureMap IoC/Entity Framework?
DefaultRegistry:
public DefaultRegistry() {
Scan(
scan => {
scan.TheCallingAssembly();
scan.WithDefaultConventions();
scan.With(new ControllerConvention());
});
For<IRepository>().Use<Repository>().Ctor<string>("connectionString").Is(ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString);
//For<IExample>().Use<Example>();
}
Затем в каждом контроллере, что любое действие нуждается в базе данных, у меня есть:
private IRepository _Repository;
public TipsController(IRepository repository)
{
_Repository = repository;
}
Когда мне нужно чтобы использовать его, я просто делаю:
data.Information = await _Repository.GetInformationAsync();
Когда я использовал ADO.NET, у меня всегда было использование заявления вокруг каждого Хин. Я видел примеры Entity Framework, в которых используется оператор using. Но, при использовании EF в сочетании с StuctureMap, мне нужно каким-то образом обернуть вокруг него заявление об использовании? Если да, то как?
Приятно, что этот парень имеет его взять на нем, но как нет официального «как» с этим? Я думаю, что это будет очень распространенная проблема. – ScubaSteve
Это метод, который рекомендует документация StructureMap - http://structuremap.github.io/the-container/nested-containers/. На самом деле, если вы смотрите под «Кто использует его?» заголовок, вы увидите, что есть рекомендация использовать пакет 'StructureMap.MVC5', который хранит вложенный контейнер идентичным способом с более ранней ссылкой. Единственная причина, по которой я ссылался на этот учебник, - это дать более подробный пример того, как он работает. –
Рассматривая последнюю версию кода StructureMap, похоже, что все это уже сделано для нас. – ScubaSteve