【发布时间】:2018-03-05 10:58:45
【问题描述】:
我首先设置了一个与 MVC 数据库的 MySQL 连接字符串,如下所示:
<add name="wf_workflowEntities" connectionString="metadata=res://*/Models.MySql.Model1.csdl|res://*/Models.MySql.Model1.ssdl|res://*/Models.MySql.Model1.msl;provider=MySql.Data.MySqlClient;provider connection string="server=192.168.1.8;user id=test;password=abc.1234;CHARSET=utf8;database=wf_workflow"" providerName="System.Data.EntityClient" />
如果需要,我想替换连接字符串的一些参数。例如,切换服务器时,必须重新设置服务器的IP(等用户名,密码)。
我使用这个模型来发送自定义参数:
public partial class BPMEngine
{
public string DBServer { get; set; }//ip server
public string DBName { get; set; }//database name
public string DBUserName { get; set; }//username
public string DBPass { get; set; }//password
}
这是视图:
@Html.TextBoxFor(model => model.DBServer, new { @class = "form-control1", placeholder = "ip server" })
@Html.TextBoxFor(model => model.DBName, new { @class = "form-control1", placeholder = "database name" })
@Html.TextBoxFor(model => model.DBUserName, new { @class = "form-control1", placeholder = "username" })
@Html.TextBoxFor(model => model.DBPass, new { @class = "form-control1", placeholder = "password" })
<button type="submit" class="btn btn-block btn-success" id="transfer">save</button>
但我不知道如何通过控制器(或操作结果)在 web.config 更改连接字符串的参数。
其实我也不知道,这个问题在controller里面应该怎么做呢?
【问题讨论】:
-
您是否真的希望在应用程序实际运行时切换数据库服务器?如果它是受控更改的一部分,您只需使用新值重新发布 web.config。如果您需要使用多个数据库,并且这些数据库是事先已知的,您可以在 web.config 中存储多个连接字符串,然后从您的代码中访问必要的一个(通过其名称)。如果 OTOH 您需要动态切换到另一个事先不知道连接参数的数据库,那么您需要使用 String.Format 或类似方法在代码中动态构建连接字符串
-
在实例化 DbContext 时考虑提供连接字符串。在此处查看
DbContext Constructor(String):msdn.microsoft.com/en-us/library/…。
标签: asp.net-mvc web-config connection-string ef-database-first