我正在使用ADO.NET实体数据模型来处理我正在进行的这个项目。通常我会在web.config中包含整个连接字符串(用户和密码),但我今天早上感觉很活泼,所以我决定从连接字符串中排除密码。对我来说不幸的是,在操作数据库之前,我似乎无法弄清楚如何传递或设置密码,到目前为止我所做的所有搜索都没有产生任何富有成效的结果。我目前所有的几行都增加了新记录:
_entities.AddToUploadSet(uploadFile);
_entities.SaveChanges();
我看到ConnectionString
中有_entities.Connection
个属性,但我找不到像密码属性那样有用的东西。
任何人都可以帮助我吗?谢谢!
为了澄清,此屏幕截图显示了我可以选择是否在web.config文件中包含密码的步骤:
正如您所看到的,我需要在提示建议的应用程序代码中设置它。
答案 0 :(得分:1)
好吧,我做了一些挖掘,并用管道录制了这个解决方案:
private static string CreateNewConnectionString(string connectionName, string password)
{
var config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~").ConnectionStrings.ConnectionStrings[connectionName];
var split = config.ConnectionString.Split(Convert.ToChar(";"));
var sb = new System.Text.StringBuilder();
for (var i = 0; i <= (split.Length - 1); i++)
{
if (split[i].ToLower().Contains("user id"))
{
split[i] += ";Password=" + password;
}
if (i < (split.Length - 1))
{
sb.AppendFormat("{0};", split[i]);
}
else
{
sb.Append(split[i]);
}
}
return sb.ToString();
}
当然,这不是最漂亮的方法,但它完成了工作。我传递一个连接字符串名称和密码,它返回一个更新的连接字符串和密码。这就是我实现它的方式:
_entities = new UploadEntity(CreateNewConnectionString("UploadEntity", "[removed]"));
_entities.AddToUploadSet(uploadFile);
_entities.SaveChanges();
答案 1 :(得分:1)
答案 2 :(得分:0)
在你的web.config中会有一个类似这样的条目:
<connectionStrings>
<add name="HelpEntities" connectionString="metadata=res://*/Models.HelpModel.HelpModel.csdl|res://*/Models.HelpModel.HelpModel.ssdl|res://*/Models.HelpModel.HelpModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=(local);Initial Catalog=XXX;Integrated Security=True;MultipleActiveResultSets=True""
providerName="System.Data.EntityClient" />
</connectionStrings>
上面的示例使用集成安全性,但可以使用用户名和密码。