Asp.net mvc 4 Asp.net MVC 4动态连接字符串
我正在工作中学习Asp.NETMVC4并修改Asp.NETMVC4项目 目前,每个项目的web.config中都设置了与数据库的连接。该项目使用的是实体框架,我也在努力理解它(我来自JavaApacheWicket的背景) 我要做的是为每个环境(本地、开发、测试、生产等)创建一个属性文件,并从属性文件中配置connectionstring,以使用与该环境关联的数据库连接信息 我已经看到了一些关于这个的话题,而且。但是我对Asp.net MVC了解不够,无法理解我应该在哪个C类中更改连接字符串 最好的方法是什么?我开始使用外部文件进行appSettings,但由于不知道如何使用appSetting键/值动态更改web.config而陷入困境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类中更改连接字符串 最
我正在修改的此应用程序具有多个项目和多个连接字符串。我将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")]