ASP.NET MVC 3 Unity DI — Разрешает параметр во время выполнения

#asp.net #asp.net-mvc-3

#asp.net #asp.net-mvc-3

Вопрос:

Я разрабатываю ASP.NET Приложение MVC с использованием Unity DI framework. Я пытаюсь использовать сценарий веб-приложения для подключения другого сегмента URI на основе базы данных. Я попробовал несколько вариантов, и это не увенчалось успехом.

Я регистрирую все объекты в контейнере unity при событии загрузки приложения в файле Gloabl.asax. Подключение к единой базе данных работает нормально.

 container.RegisterType<IContext, DbContext>(new PerRequestLifetimeManager(), new InjectionConstructor("data source=.; Initial Catalog=catalog1; User ID=sa; Password=xxxxxx;"));
  

Но я хочу динамически изменять строку подключения на основе параметра URI. Нравится http://www.domain.com/ABC . Если ABC , требуется подключить другую базу данных. Как мне вручную повторно настроить DbContext объект во время выполнения перед подключением к базе данных? или какой альтернативный вариант является наилучшим?

Ответ №1:

Вы можете назвать регистрацию типа, а затем разрешить по имени:

 container.RegisterType<IContext, DbContext>("ABC", new PerRequestLifetimeManager(), new InjectionConstructor("data source=.; Initial Catalog=catalog1; User ID=sa; Password=xxxxxx;"));

container.Resolve<IContext>("ABC")