代码之家  ›  专栏  ›  技术社区  ›  Anders

使用ADO.NET实体数据模型,如何传递(或设置)连接字符串密码?

  •  4
  • Anders  · 技术社区  · 15 年前

    我正在使用ADO.NET实体数据模型处理我正在处理的这个辅助项目。通常我会在web.config中包含整个连接字符串(用户和密码),但今天早上我感觉很兴奋,所以我决定从连接字符串中排除密码。不幸的是,在我操作数据库之前,我似乎不知道如何传递或设置密码,而且到目前为止,我所做的所有搜索都没有产生任何富有成效的结果。我目前只有几行添加了新记录:

    _entities.AddToUploadSet(uploadFile);
    _entities.SaveChanges();
    

    我看到有一个 ConnectionString 内部财产 _entities.Connection

    有人能帮我吗?谢谢

    编辑

    为了澄清,此屏幕截图显示了我可以选择是否在web.config文件中包含密码的步骤:

    alt text

    3 回复  |  直到 15 年前
        1
  •  1
  •   Anders    15 年前

    好吧,我做了一些挖掘,然后用胶带把这个解决方案粘在一起:

    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();
    
        2
  •  1
  •   Craig Stuntz    15 年前
        3
  •  0
  •   Shiraz Bhaiji    15 年前

    在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>