我在MVC 4项目中有一个实体,连接字符串由实体创建向导放在web.config中。
我需要更改此设置,并在运行时将密码分配给连接字符串(存储在web.config之外)。
如何将web.config之外的值与存储在web.config中的字符串组合在一起?
或者我可以将实体连接完全移到web.config之外吗?
这是现有的实体连接字符串:
add name="MyEntities" connectionString="metadata=res://*/Models.NewUsers.csdl|res://*/Models.NewUsers.ssdl|res://*/Models.NewUsers.msl;provider=System.Data.SqlClient;provider connection string="data source=mydb;initial catalog=MyDatabase;persist security info=True;user id=sa;password=Mypassword;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /></connectionStrings>
答案 0 :(得分:3)
对于2,您始终可以在创建时将新的connectionString(而不是web.config
)直接传递给上下文:
string newCS = "add name=...";
var context = new MyEntities(newCS);
对于1,use EntityConnectionStringBuilder来解析现有的CS或构建一个新的。
答案 1 :(得分:1)
一个简单的解决方案可能是使用基于以下内容的东西:
string con = ConfigurationManager.ConnectionStrings["PerinatalDataEntities"].
ConnectionString;
con = con.replace("user id=sa", "user id=MyUser").
Replace("password=Mypassword","password=MyNewpassword")
我相信还有一个连接构建器,但我从未使用它。