Asp.net mvc 4 Asp.net MVC 4动态连接字符串

Asp.net mvc 4 Asp.net MVC 4动态连接字符串,asp.net-mvc-4,dynamic,connection-string,Asp.net Mvc 4,Dynamic,Connection String,我正在工作中学习Asp.NETMVC4并修改Asp.NETMVC4项目 目前,每个项目的web.config中都设置了与数据库的连接。该项目使用的是实体框架,我也在努力理解它(我来自JavaApacheWicket的背景) 我要做的是为每个环境(本地、开发、测试、生产等)创建一个属性文件,并从属性文件中配置connectionstring,以使用与该环境关联的数据库连接信息 我已经看到了一些关于这个的话题,而且。但是我对Asp.net MVC了解不够,无法理解我应该在哪个C类中更改连接字符串 最

我正在工作中学习Asp.NETMVC4并修改Asp.NETMVC4项目

目前,每个项目的web.config中都设置了与数据库的连接。该项目使用的是实体框架,我也在努力理解它(我来自JavaApacheWicket的背景)

我要做的是为每个环境(本地、开发、测试、生产等)创建一个属性文件,并从属性文件中配置connectionstring,以使用与该环境关联的数据库连接信息

我已经看到了一些关于这个的话题,而且。但是我对Asp.net MVC了解不够,无法理解我应该在哪个C类中更改连接字符串

最好的方法是什么?我开始使用外部文件进行appSettings,但由于不知道如何使用appSetting键/值动态更改web.config而陷入困境


我正在修改的此应用程序具有多个项目和多个连接字符串。我将EF视为一个重载构造函数,以获取连接字符串,但我看不到在何处使用此构造函数。现在,我只想了解如何动态修改连接字符串。在项目中,我将在何处执行此操作

对于那些正在寻找这个问题解决方案的人来说,这是我的解决方案(这只是一个可能的解决方案)

在我的Web.config类中,我使用了连接字符串的configSource:

<connectionStrings configSource="connections.config"/> 
我在Global.asax.cs文件的应用程序_Start()中调用了此方法。。。像这样:

    public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        ConnectionStringBuilder.CloneEnvironmentConfigSource();
基本上,我在将“部署”我的应用程序的环境中有一个文件夹,其中存储了要复制到项目中的configSource文件,以供Web.config引用

我不得不求助于此,因为configSource url映射不允许您访问其自身上方的目录。因此,这允许我将项目部署到任何环境,而不必担心更改开发或测试的连接字符串信息

希望这能帮助一些人,如果这个解决方案将来会有问题,或者有人认为会有负面影响,请让我知道

***只是更新一下。我遇到了一个问题,应用程序_Start()被多次调用,导致我的应用程序速度减慢。我认为这是因为当Web.config在此时被更改时,框架已经加载了Web.config,所以它进行了更改并重新加载了所有内容

我要做的是获取ConnectionStringBuilder.CloneEnvironmentConfigSource();从应用程序中取出\u Start(),并将其放入AssemblyInfo.cs,如下所示:

//Called to set config file dynamicaly used by Web.config file to set  connectionstring. 
//Has to be one of the first methods ran to avoid reload of Web.config  after changes are made.
[assembly: PreApplicationStartMethod(
  typeof(ConnectionStringBuilder), "CloneEnvironmentConfigSource")]
这样,它将比其他任何东西都运行

//Called to set config file dynamicaly used by Web.config file to set  connectionstring. 
//Has to be one of the first methods ran to avoid reload of Web.config  after changes are made.
[assembly: PreApplicationStartMethod(
  typeof(ConnectionStringBuilder), "CloneEnvironmentConfigSource")]