如何通过程序将密码分配给ConnectionString

本文关键字:分配 ConnectionString 密码 何通过 程序 | 更新日期: 2023-09-27 17:58:44

我在App.config文件中定义了ConnectionString,我选中了不包括敏感数据的选项,因此密码不会出现在连接字符串中。在应用程序代码中,我使用实体框架,访问数据库如下:

using (var db = new Entities())  
{                
     List<DATA> d = db.DATA.ToList();
}

我想通过DB密码来验证用户——用户在应用程序启动时输入密码。问题是,当我不在代码中手动处理ConnectionString时,如何将此密码添加到连接字符串中?

我得到的越远:

ConnectionStringSettings conn = ConfigurationManager.ConnectionStrings["Entities"];
EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(conn.ConnectionString);
SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder(entityBuilder.ProviderConnectionString);
sqlBuilder.Password = "pwd";
entityBuilder.ProviderConnectionString = sqlBuilder.ToString();            
ConnectionStringSettings newConn = new ConnectionStringSettings("Entities",entityBuilder.ConnectionString);

但这仍然不起作用,我无法将新的连接字符串附加到ConfigurationManager.ConnectionStrings——它说它是只读值。如何克服这一点?

如何通过程序将密码分配给ConnectionString

您不能分配ConfigurationManager.ConnectionStrings,因为这只反映了您的App.config,而您的应用程序无法更改。

但是你可以告诉EF使用哪个连接字符串:

using (var db = new Entities(entityBuilder.ToString()))  
{                
     List<DATA> d = db.DATA.ToList();
}