[英]How to in-code supply the password to a connection string in an ADO.Net Entity Data Model
[英]Using ADO.NET Entity Data Model, how do I pass (or set) the connection string password?
我正在為這個正在進行的副項目使用ADO.NET實體數據模型。 通常,我會將整個連接字符串(用戶名和密碼)都包含在web.config中,但是今天早晨我感到不舒服,因此我決定從連接字符串中排除密碼。 對我來說不幸的是,在操作數據庫之前,我似乎無法弄清楚如何通過或設置密碼,到目前為止,我所做的所有搜索都沒有產生任何卓有成效的結果。 我目前僅有的幾行內容添加了一條新記錄:
_entities.AddToUploadSet(uploadFile);
_entities.SaveChanges();
我看到_entities.Connection
內部有一個ConnectionString
屬性,但是我找不到任何有用的東西,例如password屬性。
誰能幫我嗎? 謝謝!
為了澄清起見,此屏幕截圖顯示了我可以選擇是否在web.config文件中包括密碼的步驟:
如您所見,我需要按照提示提示在應用程序代碼中進行設置。
好吧,我做了一些挖掘,並一起整理了這個解決方案:
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();
使用連接字符串構建器 。
在您的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>
上面的示例使用了集成安全性,但是可以改用用戶名和密碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.