簡體   English   中英

使用ADO.NET實體數據模型,如何傳遞(或設置)連接字符串密碼?

[英]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=&quot;Data Source=(local);Initial Catalog=XXX;Integrated Security=True;MultipleActiveResultSets=True&quot;"
      providerName="System.Data.EntityClient" />
  </connectionStrings>

上面的示例使用了集成安全性,但是可以改用用戶名和密碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM