如何以编程方式将密码分配给ConnectionString
问题描述:
我在App.config
文件中定义了ConnectionString
,我检查选项是否不包含敏感数据,以便密码从连接字符串中排除。在应用程序代码中我使用实体框架和我访问DB这样的:如何以编程方式将密码分配给ConnectionString
using (var db = new Entities())
{
List<DATA> d = db.DATA.ToList();
}
我想通过数据库的密码验证用户 - 用户输入其应用程序启动时。 问题是,如何在代码中手动处理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);
但是,这仍然无法正常工作,我不能assing新的连接字符串ConfigurationManager.ConnectionStrings
- 它说,这是只读值。如何克服这一点?
答
您不能指定ConfigurationManager.ConnectionStrings
,因为它只反映了您的应用无法更改的App.config
。
但是你可以告诉EF要使用的连接字符串:
using (var db = new Entities(entityBuilder.ToString()))
{
List<DATA> d = db.DATA.ToList();
}
感谢。我原本也这么想,但是被框架生成的实体类没有提供任何这样的构造函数,现在我看到有一个基底DbContext类提供了一个被掩盖的事实,这让我感到困惑。任何想法为什么这可能是? – sherpa 2011-06-08 13:22:21
那么,我的派生类有这些构造函数,所以我不知道为什么你没有看到它们。 – 2011-06-08 13:27:43