【发布时间】:2015-08-10 17:41:44
【问题描述】:
我在运行时在 web.config 中创建了 Connectionstring。现在我将一些数据保存到我的数据库中,但它仍在读取旧的连接字符串。我该如何解决这个问题?以下是我的代码:
public string EditConnectionString(string userId, string password, string host, string dbName)
{
try
{
System.Configuration.Configuration Config = WebConfigurationManager.OpenWebConfiguration("~");
ConnectionStringsSection conSetting = (ConnectionStringsSection)Config.GetSection("connectionStrings");
string providerName = "System.Data.EntityClient";
string conString = @"metadata=res://*/OWordpress.csdl|res://*/OWordpress.ssdl|res://*/OWordpress.msl;provider=System.Data.SqlClient;provider connection string=" + "\"data source=" + host + ";initial catalog=" + dbName + ";user id=" + userId + ";password=" + password + ";MultipleActiveResultSets=True;App=EntityFramework\"";
ConnectionStringSettings StringSettings = new ConnectionStringSettings("OWordpressContainer", conString,providerName);
conSetting.ConnectionStrings.Remove(StringSettings);
conSetting.ConnectionStrings.Add(StringSettings);
Config.Save(ConfigurationSaveMode.Modified);
return MessageFamily.Success.ToString();
}
catch(Exception ex)
{
return ex.Message.ToString();
}
}
创建连接字符串后,我正在保存一些数据,如下所示,但它仍然读取旧的连接字符串值:
public string SaveDbInfo(string userId, string password, string host, string dbName)
{
try
{
var optionEntity = new Options();
optionEntity.key = "DBInfo";
optionEntity.value = "{userId:'" + userId + "',password:'" + password + "',host:'"+host+"',dbName:'"+dbName+"'}";
objContext.Options.Add(optionEntity);
objContext.SaveChanges();
return MessageFamily.Success.ToString();
}
catch(Exception ex)
{
return ex.Message.ToString();
}
}
【问题讨论】:
-
更改连接字符串后,当使用旧连接字符串时,您的值是否正确保存?
-
是的,它正在被保存在 web.config 文件中
-
您是如何以及在何处保存更改的?修改 Web 应用程序的
web.config会导致应用程序重新启动 -
如果您在运行时更改 ConnectionString,为什么还要将其保存在 web.config 中?您可以将整个连接字符串传递给 DbContext 构造函数,而不是 web.config 中的命名连接。
-
你的代码真的有效吗,还是没有保存就导致了异常?你检查
EditConnectionString的返回值了吗?
标签: c# asp.net entity-framework