如何动态绑定/注入数据库连接字符串到我的控制器?

时间:2011-12-12 12:18:51

标签: c# asp.net-mvc asp.net-mvc-3 inversion-of-control

我正在使用MVC,我的应用程序是一个可以连接到多个数据源的管理应用程序。

我想知道如何将连接字符串传递给控制器​​。任何我可以做研究的建议都会非常感激。

到目前为止,我见过这样的例子:

   protected IProductsRepository ProductsRepository = null; 

   public ProductsController(IProductsRepository productsRepository) 
   { 
      ProductsRepository = productsRepository; 
   } 

但是控制器如何为productsRepository注入正确的值?我看到了一些IOC产品,但我不知道从哪里开始,这些产品不适合大型应用吗?

2 个答案:

答案 0 :(得分:2)

根据您的全部要求,您可以参考以下内容:

像StructureMap这样的依赖注入框架。这是一个article

要自己简单地处理控制器构造,您需要创建一个实现IControllerFactory的自定义控制器工厂。 MVC Application Execution Process上的这篇文章可以帮助您更好地理解。

实施IControllerFactory后,您可以将其连接到Global.asax中,如下所示:

protected void Application_Start()
{
    RegisterRoutes(RouteTable.Routes);

    ControllerBuilder.Current.SetControllerFactory(typeof(CustomControllerFactory));
}

答案 1 :(得分:1)

我会使用Unity作为IOC容器。它不是.NET框架的一部分,但它来自Microsoft。另一种选择是MEF。这是框架的一部分,但不仅仅是IOC框架。

编辑: 正如@Daniel建议的那样,http://nuget.org/packages/Unity.Mvc3有一个用于MVC3的Nuget包。我在我的项目中经常使用Unity。