3

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

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

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

  2. 或者我可以将实体连接完全移到 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=&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>
4

2 回答 2

3

对于 2,您始终可以web.config在创建时将新的 connectionString (而不是 from )直接传递给上下文:

string newCS = "add name=...";
var context = new MyEntities(newCS);

对于 1,使用 EntityConnectionStringBuilder解析现有的 CS 或构建一个新的。

于 2012-11-28T13:25:32.517 回答
1

一个简单的解决方案可能是使用基于以下内容的东西:

string con = ConfigurationManager.ConnectionStrings["PerinatalDataEntities"].
    ConnectionString;
con = con.replace("user id=sa", "user id=MyUser").
    Replace("password=Mypassword","password=MyNewpassword")

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

于 2012-11-28T13:21:36.063 回答