在MVC 4中为实体动态创建数据库连接字符串

时间:2012-11-28 13:15:41

标签: asp.net-mvc

我在MVC 4项目中有一个实体,连接字符串由实体创建向导放在web.config中。

我需要更改此设置,并在运行时将密码分配给连接字符串(存储在web.config之外)。

  1. 如何将web.config之外的值与存储在web.config中的字符串组合在一起?

  2. 或者我可以将实体连接完全移到web.config之外吗?

  3. 这是现有的实体连接字符串:

    add name="MyEntities" connectionString="metadata=res://*/Models.NewUsers.csdl|res://*/Models.NewUsers.ssdl|res://*/Models.NewUsers.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=mydb;initial catalog=MyDatabase;persist security info=True;user id=sa;password=Mypassword;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /></connectionStrings>
    

2 个答案:

答案 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")

我相信还有一个连接构建器,但我从未使用它。